远程服务器返回错误:(407) 需要代理身份验证
Posted
技术标签:
【中文标题】远程服务器返回错误:(407) 需要代理身份验证【英文标题】:The remote server returned an error: (407) Proxy Authentication Required 【发布时间】:2012-06-21 23:30:55 【问题描述】:我参考了几个网站,这些网站都有这个问题的答案 “。” ,但没有任何帮助。 我写了一个示例代码来检查办公室的代理身份验证。代码抛出异常。
我的要求:- 验证网站返回的内容。在办公室外,代码运行良好,但在办公室内,由于代理而引发异常。 当我使用新的 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 中提到了解决方案,但即使这样也无济于事。 我错过了什么?
【问题讨论】:
【参考方案1】:我遇到了同样的问题,这对我有用
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
【讨论】:
【参考方案2】:这里有很多东西。您可以尝试显式设置凭据
request.Credentials = new NetworkCredentials(username, password)
您可能需要指定代理。默认情况下,它使用您的 IE 代理。你可能不想要那个
WebRequest webRequest = WebRequest.Create("http://***.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 返回某个其他帐户的凭据以上是关于远程服务器返回错误:(407) 需要代理身份验证的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 脚本转换错误远程服务器返回错误:(407) 需要代理身份验证
VS 2013远程服务器返回错误:(407)需要代理身份验证
在需要身份验证但不返回 407 的代理后面打开 http 连接