【问题标题】:Change WebService Endpoint from HTTP to HTTPS将 WebService 端点从 HTTP 更改为 HTTPS
【发布时间】:2019-05-25 16:27:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# asp.net .net wcf


    【解决方案1】:

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

    如果您使用的是早于 4.5 的任何 .NET Framework 版本,您可以:

    var binding = new BasicHttpBinding(BasicHttpsSecurityMode.Transport);
    

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

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

    假设您已导入派生自 System.ServiceModel.ClientBase 的 WebService 定义(例如,当您在 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();
    

    【讨论】:

    • 谢谢!这就是答案
    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2020-11-18
    • 2014-10-26
    • 2012-08-13
    • 1970-01-01
    • 2018-06-15
    • 2023-03-02
    • 2018-05-22
    相关资源
    最近更新 更多