我正在尝试在.net核心中使用SOAP服务
我要将安全模式下的基本httpbinding设置为TransportWithMessageCredential
和clientcredentialType作为证书
但我遇到错误
在此上下文中,绑定安全属性“ securityMode”不支持值“ TransportWithMessageCredential”。
代码看起来像这样
var client = new SoapCustomClient();
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
client.ClientCredentials.ClientCertificate.Certificate = certCollection[0];
我在这里犯一些严重的错误吗? 有相同的解决方案吗?
[我能够在.net框架中实现此目标,但不能在.net核心中实现>
答案 0 :(得分:1)
在较新版本的System.ServiceModel。*程序包中解决了此问题(4.7.0为我工作)。
请参见https://github.com/dotnet/wcf/issues/4045#issuecomment-577854822
答案 1 :(得分:0)
添加服务引用后只需编辑.csproj文件,并将这些依赖项从4.4。*指向4.6。*
<ItemGroup> <PackageReference Include="System.ServiceModel.Duplex" Version="4.6.*" />
<PackageReference Include="System.ServiceModel.Http" Version="4.6.*" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.6.*" />
<PackageReference Include="System.ServiceModel.Security" Version="4.6.*" />
</ItemGroup>
并添加此
binding.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.TransportWithMessageCredential;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;