将WebService端点从HTTP更改为HTTPS

时间:2018-12-27 17:05:09

标签: c# asp.net .net wcf

我真的是.NET的新手,我遇到了一个障碍(我想)。

我有一个项目,需要为我们使用的另一项服务更改一个地址,该地址从HTTP更改为HTTPS。

我的问题是,对于此更改,我是否需要更改调用请求的方法的代码,以便在其中加载证书,还是仅更改端点配置?

我尝试了从NoneTransportWithMessageCredential的端点配置安全性绑定,还将证书加载到计算机存储库中,但是我不确定如何指定要发送的证书

1 个答案:

答案 0 :(得分:1)

我猜您现在正在使用BasicHttpBinding,并且需要从HTTP端点更改为需要通过X509证书进行验证的HTTPS端点。我假设您正在使用C#。

如果您使用的旧版本的.NET Framework早于 4.5 ,则可以执行以下操作:

var binding = new BasicHttpBinding(BasicHttpsSecurityMode.Transport);

如果您使用的是.NET Framework 4.5或更高版本,则可以这样做:

var binding = new BasicHttpsBinding();
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

假设您已导入源自System.ServiceModel.ClientBase的Web服务定义(例如,当您在Visual Studio中右键单击该项目并选择“添加”>“服务引用”),您可以执行以下操作:

var address = new EndpointAddress(serviceUrl);
var wsClient = new ServiceReference1.YourServiceClient(binding, address);
// x509Cert is a variable of type 'X509Certificate2'.
wsClient.ClientCredentials.ClientCertificate.Certificate = x509Cert;

// Take a look at: https://stackoverflow.com/a/49303859/
wsClient.Open();
wsClient.CallTheService();
wsClient.Close();