请求失败,HTTP状态为407:authenticationrequired。

时间:2014-07-30 05:18:59

标签: c# web-services http status http-status-code-407

好的伙计..继承人的交易 - >

我在我的控制台应用程序中使用了一个Web服务,并且能够在从本地计算机运行时成功调用它。

在Win 2K8盒子上部署应用程序时出现问题。 我第一次出现 - > 无法解析远程名称:'www.www.net' - >所以我添加了一个WebProxy并将其连接到Web服务的.Proxy属性。

我遇到的下一个错误是 - > 请求失败,HTTP状态为407:authenticationrequired 。我无法解决同样的问题。

我用过 - > .Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;并且还明确定义了代理信用 - >用户名,密码,域名 - >但无济于事

当从服务器内通过浏览器访问时,Web服务正常工作。

任何帮助都将受到高度赞赏。

感谢您的时间。

RGDS,

2 个答案:

答案 0 :(得分:0)

你是否在代理服务器后面?您的浏览器是否配置了代理服务器? 407表示"需要代理身份验证",因此您需要提供可在代理服务器上进行身份验证的凭据。我的第一个猜测是你需要这样的东西。

  var credentials = new NetworkCredential("username", "password", "domain");
  WebProxy proxy = new WebProxy("YourProxyServerUri", true) { Credentials = credentials };

然后你应该使用te代理对象作为web服务的代理服务器。

您还可以使用系统配置的代理服务器:

  WebProxy myProxy = (WebProxy) System.Net.HttpWebRequest.GetSystemWebProxy();

或者你甚至可以在web.config中设置它(但我认为它不可能在这里提供凭据:

 <system.net> 
      <defaultProxy useDefaultCredentials="true"> 
         <proxy usesystemdefault="False" proxyaddress="YourProxyServerUri"                
          bypassonlocal="True" /> 
      </defaultProxy> 
 </system.net>

如果一切正常,您可能希望提供一些方法在运行时从代码外部配置代理服务器和凭据。否则,如果生产环境或位置中的某些内容发生更改,则必须重新编译。您可以将它放在web.config中的appSettings部分,数据库,app.config等中。

还要确保在设置中提供正确的端口号(例如192.168.1.100:8888)

答案 1 :(得分:0)

好的..这是什么让它最终起作用 - &gt;

与NOC(网络)人员取得​​联系 - 他们又开启了对服务器的请求/响应的基于IP的显式访问。

这是否会导致安全漏洞 - 我不确定。

RGDS,