HttpWebRequest 不使用带有凭据的默认 IE 代理
HttpWebRequest doesnt not use default IE proxy with credentials
On Windows 7 我在 Internet 选项设置中设置了代理。
此代理需要在 IE 中询问的身份验证,然后我输入(并保存)凭据,然后我就可以访问网络了。但是当我使用这段代码时,我得到了 WebException: (407) Proxy Authentication Required.
var request = WebRequest.Create(@"https://google.com");
var res = request.GetResponse();
我在调试中看到 WebRequest 正在获取默认的代理 uri 和端口,但由于某种原因它没有进行身份验证。既不是来自已保存的 Windows 凭据,也不是通过弹出 window 来询问凭据。
我也尝试用这段代码隐式设置它并得到相同的 407:
var systemProxy = WebRequest.GetSystemWebProxy();
var systemProxyUri = systemProxy.GetProxy(new Uri("http://www.google.com"));
var sysWebProxy = new WebProxy(systemProxyUri) { UseDefaultCredentials = true };
WebRequest.DefaultWebProxy = sysWebProxy;
我想念什么?
我如何定义 WebRequest 以将默认系统的代理与保存的凭据一起使用?或至少让 windows 要求凭据?
我不能使用 app.config 并且不想对凭据进行硬编码。
不,不是!
如果您编写程序,显示弹出窗口并要求提供凭据
IWebProxy proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = new NetworkCredential(proxyLogin.Text, proxyPassword.Password);
On Windows 7 我在 Internet 选项设置中设置了代理。 此代理需要在 IE 中询问的身份验证,然后我输入(并保存)凭据,然后我就可以访问网络了。但是当我使用这段代码时,我得到了 WebException: (407) Proxy Authentication Required.
var request = WebRequest.Create(@"https://google.com");
var res = request.GetResponse();
我在调试中看到 WebRequest 正在获取默认的代理 uri 和端口,但由于某种原因它没有进行身份验证。既不是来自已保存的 Windows 凭据,也不是通过弹出 window 来询问凭据。
我也尝试用这段代码隐式设置它并得到相同的 407:
var systemProxy = WebRequest.GetSystemWebProxy();
var systemProxyUri = systemProxy.GetProxy(new Uri("http://www.google.com"));
var sysWebProxy = new WebProxy(systemProxyUri) { UseDefaultCredentials = true };
WebRequest.DefaultWebProxy = sysWebProxy;
我想念什么? 我如何定义 WebRequest 以将默认系统的代理与保存的凭据一起使用?或至少让 windows 要求凭据?
我不能使用 app.config 并且不想对凭据进行硬编码。
不,不是!
如果您编写程序,显示弹出窗口并要求提供凭据
IWebProxy proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = new NetworkCredential(proxyLogin.Text, proxyPassword.Password);