将 WSHttpBinding 移至 BasicHttpBinding...
问题陈述:.Net core 不支持WSHttpBinding 。
当我的应用程序位于 .Net 4.6 中时,我使用 WSHttpBinding 通过以下代码创建与 WCF 的连接。
var binding = new WSHttpBinding(SecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
binding.Security.Message.EstablishSecurityContext = false;
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "Thumprint", true)[0];
result = new MyClient(binding, address);
client = result as ClientBase<TInterface>;
client.ClientCredentials.ClientCertificate.Certificate = cert;
Run Code Online (Sandbox Code Playgroud)
现在我正在将我的应用程序迁移到.Net core,我发现不支持WSHttpBinding。我计划使用BasicHttpBinding并进行以下更改:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
Run Code Online (Sandbox Code Playgroud)
对于BasicHttpBinding,没有提供以下代码:
binding.Security.Message.EstablishSecurityContext = false;//This code is w.r.t. WSHttpBinding.
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:这种改变可以接受吗?还是我应该采取其他方法?请协助!
在 .NET Core 和 .NET 5 中
BasicHttpBinding和WSHttpBinding
通过安装 Nuget 包System.ServiceModel.Http版本 4.8.1解决了我的问题
https://www.nuget.org/packages/System.ServiceModel.Http
在 Visual Studio 的包控制台管理器中运行此命令
Install-Package System.ServiceModel.Http
Run Code Online (Sandbox Code Playgroud)
.net core 3.1 支持 Wshttpbinding。
You should use the Nuget --System.private.serviceModel to get the wshttp binding methods in .NET core 3.1
Run Code Online (Sandbox Code Playgroud)
Below are the Nuget Packages that will be required.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6332 次 |
| 最近记录: |