我有一个客户,他们给了他们WSDL,我使用svcutil工具从他们的WSDL中生成了一些代码。 [System.ServiceModel.OperationContractAttribute(Action="")]
,但在WCF中是不允许的。如何使该操作成为空白字符串?
答案 0 :(得分:1)
以下内容对我有用:来自here
下载Microsoft WCF示例。 从WF_WCF_Samples \ WCF \ Extensibility \ Interop \ RouteByBody \ CS \ service
将以下文件添加到项目中DispatchByBodyOperationSelector.cs
DispatchByBodyBehaviorAttribute.cs
将以下属性添加到您的界面(ServiceContract旁边)
XmlSerializerFormat
DispatchByBodyBehavior
将以下内容添加到您的服务界面
[OperationContract(Action = "")]
public void DoNothing()
{
}
对于我的服务,所有消息的WrapperName
和Wrappernamespace
为空。我必须进入DispatchByBodyBehaviorAttribute
并编辑ApplyDispatchBehavior()
来添加以下几行来进行检查:
if (qname.IsEmpty) {
qname = new XmlQualifiedName(operationDescription.Messages[0].Body.Parts[0].Name, operationDescription.Messages[0].Body.Parts[0].Namespace);
}