【发布时间】:2019-03-15 09:50:59
【问题描述】:
将 WSHttpBinding 移动到 BasicHttpBinding....
问题说明:WSHttpBinding 在 .Net 核心中不受支持。
当我的应用程序在 .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;
现在我正在将我的应用程序迁移到 .Net 核心,我发现不支持 WSHttpBinding。 我打算使用 BasicHttpBinding 并进行以下更改:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
BasicHttpBinding 没有对以下代码的规定:
binding.Security.Message.EstablishSecurityContext = false;//This code is w.r.t. WSHttpBinding.
所以,我的问题是:是否可以进行这种更改,或者我应该采取其他方式? 请帮忙!
【问题讨论】:
-
我认为它不起作用。目前Core项目中的Basichttpbinding只能调用security=none的Wshttpbinding。请参考我之前的回复。 stackoverflow.com/questions/54635079/…
-
是的!,它不起作用。我正在尝试使用以下 federico scamuzzi 的建议,但这对我不起作用。
-
我将以用户的声音提交您的请求。谢谢。您也可以自己将其发布在 Github 问题上。 github.com/dotnet/wcf/issues