加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – WCF:是否有一个属性要在OperationContract中生成参

发布时间:2020-12-16 04:07:51 所属栏目:asp.Net 来源:网络整理
导读:我使用[DataMember(IsRequired = true)]来生成所需的DataContract属性.对于OperationContract参数似乎没有一些IsRequired.如何使它们成为必需而不允许null? 在SoapUI工具中,OperationContract中的参数似乎是可选的.虽然这绝不是可选的或null. WCF接口: [Op
我使用[DataMember(IsRequired = true)]来生成所需的DataContract属性.对于OperationContract参数似乎没有一些IsRequired.如何使它们成为必需而不允许null?

在SoapUI工具中,OperationContract中的参数似乎是可选的.虽然这绝不是可选的或null.

WCF接口:

[OperationContract]
IsClientUpdateRequiredResult IsClientUpdateRequired(IsClientUpdateRequiredInput versie);

...

[DataContract]
public class IsClientUpdateRequiredInput
{
    [DataMember(IsRequired=true)]
    public string clientName { get; set; }
    [DataMember(IsRequired = true,Order = 0)]
    public int major { get; set; }
    [DataMember(IsRequired = true,Order = 1)]
    public int minor { get; set; }
    [DataMember(IsRequired = true,Order = 2)]
    public int build { get; set; }
    [DataMember(IsRequired = true,Order = 3)]
    public int revision { get; set; }
}

soapUI请求模板:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:pir="http://schemas.datacontract.org/2004/07/PirIS.Web.WCF.InputClasses">
   <soap:Header/>
   <soap:Body>
      <tem:IsClientUpdateRequired>
         <!--Optional:-->
         <tem:versie>
            <pir:clientName>?</pir:clientName>
            <pir:major>?</pir:major>
            <pir:minor>?</pir:minor>
            <pir:build>?</pir:build>
            <pir:revision>?</pir:revision>
         </tem:versie>
      </tem:IsClientUpdateRequired>
   </soap:Body>
</soap:Envelope>

解决方法

不幸的是,使用默认WCF无法完成.有一些解决方法:

>自定义RequiredParametersBehavior属性
>使用企业库和associate a ruleset to your method中的Validation Application Block

但是,您可以实现FaultContract并在输入参数为null时抛出错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读