2

我正在从 wsdl 生成 Web 服务,并在其中包含一些带有属性的方法。

[System.ServiceModel.OperationContractAttribute(Action="http://link/update", ReplyAction="*")]
WebServices.updateResponse update(WebServices.updateRequest request);

当我尝试在我的 VS2010 项目中添加对此服务的引用时,根本没有任何方法。

在我改变属性之后

[System.ServiceModel.OperationContract]
WebServices.updateResponse update(WebServices.updateRequest request);

这些方法都是可用的。

第一种情况有什么问题?

4

2 回答 2

2

System.ServiceModel.OperationContract - 是 System.ServiceModel.OperationContractAttribute 的简短版本。问题在于您的 ReplyAction="*" 会破坏您的元数据(意味着 WsdlExporter 将忽略该操作)。尝试将其设置为任何其他值。

来自 MSDN(http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.replyaction.aspx):

除了为回复消息的操作标头指定特定值外,您还可以指定字符串“*”(星号)。在服务中指定星号指示 WCF 不要向消息添加回复操作,这在您直接针对消息进行编程时很有用。在客户端应用程序中指定星号指示 WCF 不验证回复操作。

于 2013-03-27T14:28:59.490 回答
0

根据msdn没有区别。C# 将 OperationContract 转换为 OperationContractAttribute

于 2013-03-27T14:25:09.447 回答