如何在 WCF 服务中使 Action 为空白,因为客户端需要空白 SoapAction=""?
How to make Action blank in WCF service, as client need blank SoapAction=""?
我有一个客户,他们提供了一些 WSDL,我使用 svcutil 工具从他们的 WSDL 生成了一些代码。 [System.ServiceModel.OperationContractAttribute(Action="")]
但在 WCF 中是不允许的。我如何才能使此操作成为空白字符串?
以下对我有用:来自 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);
}
我有一个客户,他们提供了一些 WSDL,我使用 svcutil 工具从他们的 WSDL 生成了一些代码。 [System.ServiceModel.OperationContractAttribute(Action="")]
但在 WCF 中是不允许的。我如何才能使此操作成为空白字符串?
以下对我有用:来自 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);
}