如何防止out-parameter结束WCF Web服务中的返回参数?

Abe*_*bel 9 c# wcf web-services wcf-client c#-4.0

如果我的合同如下:

[OperationContract]
void DoSomething(int id, out string moreInfo);
Run Code Online (Sandbox Code Playgroud)

这最终看起来像:

string DoSomething(int id);
Run Code Online (Sandbox Code Playgroud)

导入Web服务引用时.是否有可能影响参数顺序的自动转换?在函数签名的开头找到所有out参数已经令人惊讶了,但这仍然可行,但我们希望void-methods继续作为void-methods.或者这是SOAP限制吗?

b_l*_*itt 4

它似乎基于 WSDL 限制: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/48b5992f-f7bd-4b67-8299-514d1780fa9a

WSDL 不显示原始方法签名;相反,它将输入参数显示为一组,将输出参数显示为另一组。

WSDL 中存在无法将返回值与输出参数分开的限制。但这意味着 void 方法的限制将是我认为 svcutil.exe 的一部分。没有理由不能在 svcutil 上进行开关以不将第一个输出移动到返回值,但这将是对 ms connect 上的功能的请求。

如果您的问题是一致性,您可以返回一个简单的 status int 或 bool,而不是 void,但我确信如果您已经有数十种方法,那么这不是一个完美的答案。