IIS6
- 我的网络上有一台服务器,其网络名称为Test_Server。它连接到ISA代理。
- 我的服务器名为Live_Server,名称为IP Live_IP。它没有连接到任何代理。或者假设是。
- 当然我打开所有防火墙端口
- 我有一个WCF REST服务,我使用HTTPS连接它,一切都很好: -
- 使用HTTPS请求将WCF Rest连接到以下任何一项时: -
我收到502 Bad gateway错误,异常状态为System.Net.WebExceptionStatus.ProtocolError
什么是机会??
以下是WCF的web.config
<system.serviceModel>
<services>
<service name="Contracts.WCF_REST">
<endpoint behaviorConfiguration="webHttp" binding="webHttpBinding" bindingConfiguration="SecureWebHttp" contract="Contracts.IWCF_REST" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="SecureWebHttp" useDefaultWebProxy="false">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
答案 0 :(得分:2)
疯狂的结束
据我了解,客户端正在检测代理并尝试通过它进行连接。我只是要求.net停止使用在客户端找到的任何代理。
但我仍然没有得到它,为什么它适用于HTTP并且无法使用HTTPS。 HTTPS仅在我停止使用代理时才起作用。
有人有更好的解释吗?
WebRequest.DefaultWebProxy = null;
答案 1 :(得分:0)
在将内部部署的WCF服务连接到Azure托管的Web角色时,我已经看到了这样的问题,这些问题主要是由于在内部部署网络中使用代理。在任何企业IT环境中,所有计算机网络设置都设置为使用代理服务器自动检测,或者如果您有多个代理服务器,则实际设置选择哪个。当WCF服务连接外部世界时,它会通过相同的代理设置,实际上会改变连接它的动态并引入行为。
那么为什么使用HTTPS而不是HTTP,这是因为HTTPS使用TLS来保护通信,如果在中间有代理,则很可能无法建立WCF通信。
通过将UseDefaultWebProxy设置为false,您要求Web服务不使用计算机专用代理并使用用户设置,这是您的Web服务配置的一部分。这样,您可以强制您的WCF特定配置通过计算机专用代理建立HTTPS连接。