.NetStandard或.NET Core中的WSHttpBinding

Imr*_*han 6 wshttpbinding uwp asp.net-core .net-standard

我想将NMVS协议集成到我的应用程序中,该应用程序提供用于测试的wsdl文件,这些文件是在.net框架库中编写的示例代码。

我想在.netstandard,.netcore或UWP应用程序中对其进行测试,但wsdl文件仅支持“ WSHttpBinding”,而.netstandard,.net core和UWP不支持。

 <wsdl:binding name="WSHttpBinding_ISinglePackServices" type="ns:ISinglePackServices">



WSHttpBinding binding = new WSHttpBinding();
 binding.Security.Mode =  SecurityMode.Transport;
 binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
Run Code Online (Sandbox Code Playgroud)

我使用basichttpbinding,但出现错误,提示“内容类型为application / soap + xml;响应消息的charset = UTF-8与绑定的内容类型不匹配(text / xml; charset = utf-8)。 ”

还有什么其他方法可以解决此问题?

感谢Imrankhan

小智 10

这是您的问题的解决方案:

var transportSecurityBinding = new BasicHttpBinding();
transportSecurityBinding.Security.Mode = BasicHttpSecurityMode.Transport;
transportSecurityBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

var customTransportSecurityBinding = new CustomBinding(transportSecurityBinding);

var textBindingElement = new TextMessageEncodingBindingElement
{
      MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None)
};

// Replace text element to have Soap12 message version
customTransportSecurityBinding.Elements[0] = textBindingElement;
Run Code Online (Sandbox Code Playgroud)