Mar*_*arc 4 c# wcf proxy azure
我正在托管一个WCF Web服务(在Azure上),并将一个WPF桌面应用程序发送给一个客户端(显然)尝试通过代理访问该服务.
服务调用失败,返回
远程服务器返回意外响应:407需要代理身份验证
ServiceModel
客户端app.config文件的部分如下所示:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ILicensing" closeTimeout="00:00:15" openTimeout="00:00:15"
receiveTimeout="00:00:15" sendTimeout="00:00:15" maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="xxxxxxx"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ILicensing"
contract="Cloud.ILicensing" name="BasicHttpBinding_ILicensing" />
</client>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
这基本上就是我所知道的.
我想知道通过修改app.config文件和/或服务的web.config文件来修复此行为(这应该无关紧要,因为无论如何都没有到达服务).
据我所知,useDefaultWebProxy
绑定节点有一个属性,它要求查找系统代理配置并使用它来连接服务.但是,作为默认值true
,我希望将其设置为true
显式不会改变任何东西(我猜这基本上是默认值的定义).
代理验证失败的原因是什么,考虑到useDefaultWebProxy
没有设置,因此它应该是true
由于它的默认值?
考虑到限制信息,如何修改app.config以解决问题?基本上:我需要知道/询问我的客户端(即代理服务器地址)以及我需要在客户端配置文件中插入信息的位置?
如何在本地计算机上设置模拟问题的测试环境?
对于1和2,您需要配置System.Net
为默认代理提供默认凭据 - 默认情况下不会这样做(因为在自动访问互联网的应用程序中隐藏的回调代码会很糟糕).
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
Run Code Online (Sandbox Code Playgroud)
对于3,我不完全确定如何在本地测试它,因为您需要一台机器充当代理,这些通常是域控制器类型的机器.您可以使用2个虚拟机进行模拟,但我希望您拥有一台功能强大的机器,以便对此进行测试似乎需要付出很多努力.
归档时间: |
|
查看次数: |
3664 次 |
最近记录: |