如何在WCF服务中使Action为空白,因为客户端需要空白的SoapAction =“”?

时间:2018-08-27 11:20:09

标签: wcf soap wsdl svcutil.exe

我有一个客户,他们给了他们WSDL,我使用svcutil工具从他们的WSDL中生成了一些代码。 [System.ServiceModel.OperationContractAttribute(Action="")],但在WCF中是不允许的。如何使该操作成为空白字符串?

1 个答案:

答案 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()
{
}

对于我的服务,所有消息的WrapperNameWrappernamespace为空。我必须进入DispatchByBodyBehaviorAttribute并编辑ApplyDispatchBehavior()来添加以下几行来进行检查:

if (qname.IsEmpty) {
    qname = new XmlQualifiedName(operationDescription.Messages[0].Body.Parts[0].Name, operationDescription.Messages[0].Body.Parts[0].Namespace);
}