如何动态设置使用 SSL 的 .Net 3.5 Web 服务

本文关键字:Net SSL 服务 Web 何动态 动态 设置 | 更新日期: 2023-09-27 18:32:31

我正在编写一个需要连接到 Web 服务的应用程序。 在某些情况下,我需要切换端点地址。

我认为这就像更改System.ServiceModel.Description.ServiceEndpoint一样简单,当地址需要更改时。 但是,当我这样做时,我得到一个异常,因为一个地址需要SSL,而另一个地址不需要。

如何正确更新 Web 服务终结点地址?

注意:这是一个 C#、.Net 3.5 项目。

如何动态设置使用 SSL 的 .Net 3.5 Web 服务

好的,我找到了解决方案。 当 Visual Studio 为服务生成包装类时,[ServiceName]SoapClient具有一个构造函数,该构造函数将绑定和终结点作为参数。 定义这些并将它们传递给构造函数。

这是一个伪示例。

    void InitializeMyWebService(bool useSSLSite)
    {
        BasicHttpBinding b = useSSLSite ? 
            new BasicHttpBinding(BasicHttpSecurityMode.Transport) : 
            new BasicHttpBinding();
        EndpointAddress e = useSSLSite ? 
            new EndpointAddress("https://www.example.com/svc/MyWebService.asmx") :
            new EndpointAddress("http://intranet_server/svc/MyWebService.asmx");
        myWebService = new MyWebServiceSoapClient(b, e);
    }
}

MyWebService现在将按照方法的 userSSLSite 参数定义工作。