如何动态设置使用 SSL 的 .Net 3.5 Web 服务?
Posted
技术标签:
【中文标题】如何动态设置使用 SSL 的 .Net 3.5 Web 服务?【英文标题】:How can I dynamically set a .Net 3.5 Web Service that uses SSL? 【发布时间】:2013-09-29 19:30:27 【问题描述】:我正在编写一个需要连接到 Web 服务的应用程序。在某些情况下,我需要切换端点地址。
我认为当地址需要更改时,这就像更改System.ServiceModel.Description.ServiceEndpoint
一样简单。但是,当我这样做时遇到了一个异常,因为一个地址需要 SSL,而另一个地址不需要。
我如何正确更新网络服务端点地址?
注意:这是一个 C#、.Net 3.5 项目。
【问题讨论】:
这对你有用吗? ***.com/questions/1978962/… 抱歉我的无知,代理从哪里来? 读一读:msdn.microsoft.com/en-us/library/ms733133.aspx. 您是连接到 wcf 服务还是 xml Web 服务? 它是 XML,但它是一种旧的 ASP.net 形式的 Web 服务。 【参考方案1】:好的,我找到了解决方案。当 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
参数所定义的那样。
【讨论】:
以上是关于如何动态设置使用 SSL 的 .Net 3.5 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
将代码从 .net 4.0 回滚到 .net 3.5,现在动态不起作用