我目前正在关注类似的事情:
HttpWebRequest myWebRequest = (HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
IWebProxy proxy = myWebRequest.Proxy;
Uri newUri = new Uri(proxyAddress);
myProxy.Address = newUri;
... (setting of username/password for proxy)
myProxy.Credentials = new NetworkCredential(username, password);
myWebRequest.Proxy = myProxy;
HttpWebResponse myWebResponse = (HttpWebResponse) myWebRequest.GetResponse();
我正在运行IIS 7.5托管应用程序中的代码,该应用程序需要在进程继续之前验证URL是否可联系。由于该服务不应该访问外部世界,因此我需要使用具有我们IT部门提供给我的凭据的特定代理服务器。
不幸的是,无论我尝试什么(app.config中的system.net/default代理,使用关联的模块类来创建URL和凭据,或者类似上面的内容),代理服务器都不会获得这些凭据传递给它。
有什么我可能错过的吗?我已尝试在调试模式下从VS2010 Web应用程序运行此应用程序,其中应用程序从IIS运行,具有默认的应用程序池标识。并且在我们的QA环境中的服务器中没有任何变化 - 它根本不使用代理,或者只是不发送凭据。
我也尝试将PreAuthenticate = true
和UseDefaultCredentials
都设置为true
和k,并且没有变化。
关于我缺少的任何想法?
答案 0 :(得分:1)
编辑:对不起,首先误解了您的问题 - 更正了以下答案:
我会尝试创建一个新的WebProxy对象,设置其凭据,然后将其设置为您的请求的代理(而不是从请求中获取现有的代理对象并进行修改):
HttpWebRequest myWebRequest =
(HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
IWebProxy proxy = new WebProxy(proxyAddress);
string proxyUsername = @"foo";
string proxyPassword = @"bar";
proxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword);
myWebRequest.Proxy = proxy;