gpt4 book ai didi

wcf - 如何强制 WCF 使用所需的方法参数(minoccurs ="1")自动生成 WSDL?

转载 作者:行者123 更新时间:2023-12-03 14:52:53 33 4
gpt4 key购买 nike

在使用 WCF 和 OperationContracts 时,我定义了以下方法:

    [OperationContract]
[FaultContract(typeof(ValidationFault))]
[FaultContract(typeof(FaultException<ExceptionDetail>))]
int DoSomething(int someId, MyComplexType messageData);

当 WCF 运行时将其转换为 WSDL 时,它最终会为参数 someId 和 messageData 列出 minoccurs="0"(如果缺少这些参数,随后会引发运行时错误)。

如果我使用 SoapUI 生成代理,我会得到如下所示的内容:
  <com:DoSomething>
<!--Optional-->
<com:EventId>1</com:EventId>
<!--Optional-->
<com:myComplexType >
<com:id>1</com:id>
</com:myComplexType >
</com:DoSomething>

MyComplexType 中的 id 字段使用 IsRequired="true"使用 DataMemeber 属性进行标记,因此被公开为强制性的。

WSDL 指定一个参数是可选的,而它不是可选的,这显然是一种误导,但我看不到任何明显的方法来标记 OperationContract 以强制 WCF 根据需要识别和公开这些参数。

我有点困惑,似乎没有明显的方法可以做到这一点(阅读智能感知/msdn/google)。或者我会失明并忽略一些明显的东西。

有什么线索吗?

最佳答案

我刚刚写了一个 Blog post关于这个主题,因为我上周自己遇到了这个问题。
它解释了如何修改 WCF 在运行时生成的元数据。

除了下载源文件外,您只需要在契约(Contract)定义中添加一个属性。像这样:

[ServiceContract]
[RequiredParametersBehavior]
public interface ICalculatorService
{
[OperationContract]
int Add(int firstValue, int secondValue);
}

这是更详细解释它的博客文章: Controlling WSDL minOccurs with WCF

关于wcf - 如何强制 WCF 使用所需的方法参数(minoccurs ="1")自动生成 WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438623/

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