gpt4 book ai didi

asp.net - WCF:是否有一个属性可以使 OperationContract 中的参数成为必需的?

转载 作者:行者123 更新时间:2023-12-04 08:27:25 25 4
gpt4 key购买 nike

我用 [DataMember(IsRequired=true)]使 DataContract 属性成为必需。 OperationContract 参数似乎没有一些 IsRequired 。如何使它们成为必需且不允许为空?

OperationContract 的参数 in 在 SoapUI 工具中似乎是可选的。尽管这绝不能是可选的或为空的。

WCF 接口(interface):

[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 属性
  • 使用 Validation Application Block来自企业库和 associate a ruleset to your method

  • 但是,您可以实现 FaultContract 并在输入参数为空时引发错误。

    关于asp.net - WCF:是否有一个属性可以使 OperationContract 中的参数成为必需的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12836534/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com