在使用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根据需要识别和公开这些参数。
我有点困惑,似乎没有一个明显的方法来做到这一点(阅读intellisense / msdn / google)。否则我就会盲目忽略一些显而易见的东西。
有什么线索吗?
https://stackoverflow.com/questions/1438623
复制相似问题