Reputation: 523
Moving WSHttpBinding to BasicHttpBinding....
Problem statement: WSHttpBinding is not supported in .Net core.
When my application was in .Net 4.6, I was using WSHttpBinding to create the connection with WCF with below code.
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;
Now I am migrating my application to .Net core and i found there is no support to WSHttpBinding. I am planning to move with BasicHttpBinding and made the following changes:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
With BasicHttpBinding there is no provision to below code:
binding.Security.Message.EstablishSecurityContext = false;//This code is w.r.t. WSHttpBinding.
So, my question is: Does this changes okay to go with or I should do some other way around? Please assist!
Upvotes: 9
Views: 7107
Reputation: 3822
In .Net 5, Wshttpbinding no longer supports SecurityMode Message. Use Transport instead. However, it is not as secure as Message.
var binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Transport;
https://learn.microsoft.com/en-us/dotnet/framework/wcf/how-to-set-the-security-mode
Upvotes: 3
Reputation: 1589
in .NET Core & .NET 5
BasicHttpBinding and WSHttpBinding
Solved for me by installing Nuget package System.ServiceModel.Http
Version 4.8.1
https://www.nuget.org/packages/System.ServiceModel.Http
Run this command in Package Console Manager in Visual Studio
Install-Package System.ServiceModel.Http
Upvotes: 5
Reputation: 523
Wshttpbinding is supported in .net core 3.1.
You should use the Nuget --System.private.serviceModel to get the wshttp binding methods in .NET core 3.1
Below are the Nuget Packages that will be required.
Upvotes: 2
Reputation: 3778
I did the same (move from FULL .NET FRAMEWORK to .NET CORE PROJECT) and i found there is NO SUPPORT for WCF
...
what i have done is:
1 - Create a .NET STANDARD LIB PROJ
.. with reference to your SOAP endpoint (it support WCF)
2 - Reference your LIB to a .NET CORE PROJECT
hope it helps you!!
and then reference it like:
Upvotes: 0