【问题标题】:The remote server returned an error: (407) Proxy Authentication Required远程服务器返回错误:(407) 需要代理身份验证
【发布时间】:2012-06-21 23:30:55
【问题描述】:

我参考了几个网站,这些网站都有这个问题的答案 “远程服务器返回错误:(407) 需要代理身份验证。” ,但没有任何帮助。 我写了一个示例代码来检查办公室的代理身份验证。代码抛出异常。

我的要求:- 验证网站返回的内容。在办公室外,代码运行良好,但在办公室内,由于代理而引发异常。 当我使用新的 NetworkCredential 对凭据进行硬编码时,它工作正常。

int ResponseCode;
string url = "http://www.msftncsi.com/ncsi.txt";
WebRequest request = WebRequest.Create(url);

request.Credentials = CredentialCache.DefaultCredentials;
using (WebResponse response = request.GetResponse())
 {

   Stream dataStream = response.GetResponseStream();
   StreamReader reader = new StreamReader(dataStream);
   responseFromServer = reader.ReadToEnd();
   ResponseCode = (int)((HttpWebResponse)response).StatusCode;
   reader.Close();
}

我不想硬编码。我在http://social.msdn.microsoft.com/Forums/is/csharpgeneral/thread/c06d3032-dceb-4a1a-bb6a-778fd13a938a 中提到了解决方案,但即使这样也无济于事。 我错过了什么?

【问题讨论】:

    标签: c# httpwebrequest


    【解决方案1】:

    我遇到了同样的问题,这对我有用

    request.Proxy.Credentials = CredentialCache.DefaultCredentials;

    【讨论】:

      【解决方案2】:

      这里有很多东西。您可以尝试显式设置凭据

      request.Credentials = new NetworkCredentials(username, password)
      

      您可能需要指定代理。默认情况下,它使用您的 IE 代理。你可能不想要那个

      WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/");
      webRequest.Proxy = new WebProxy("http://proxyserver:80/",true); 
      

      【讨论】:

      • 1) 当我明确设置凭据时它可以工作。但是,如果我将此应用程序提供给其他用户,它将无法正常工作。
      • 我需要有共同的解决方案。 2) 指定代理有多大帮助?它会在全球范围内被接受(意思是我可以在任何办公网络中使用这个应用程序)吗?如果是,那么我很乐意使用它 3) 我们的程序有几个检查来验证网络连接。此代码是检查之一,在办公室失败。我们需要在不明确指定凭据的情况下让它工作。 @fenix2222-感谢您的回复。谢谢。
      • @user1473039 这意味着您需要让基础架构人员启用对外部网站“msftncsi.com/ncsi.txt”的访问权限,或者让他们创建一个您可以使用的服务帐户,而不是使用您的凭据。归根结底,这就是它的工作原理。或者,您可以尝试模拟应用程序,以便在它运行时 CredentialCache.DefaultCredentials 将使用运行应用程序的人的 Windows 凭据
      • 听起来很奇怪,即使可以访问互联网,使用程序我也无法从网站获得响应。使用 CredentialCache.DefaultCredentials 没有帮助。应该有某种方法可以获取网络凭据并将其传递给代理。
      • @user1473039 正如我所说,您可能需要模拟应用程序,因为应用程序运行的上下文可能不是您的用户帐户,因此 CredentialCache.DefaultCredentials 返回某个其他帐户的凭据
      猜你喜欢
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多