2013-03-19 98 views
3

我目前以下一些与此类似:C#HttpWebRequest的使用代理凭据不传递凭据到代理服务器

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(); 

我从需要验证URL的可接触的IIS 7.5托管的应用程序运行的代码在一个过程继续之前。由于该服务不应该访问外部世界,因此我需要使用具有我们IT部门给予我的凭证的特定代理服务器。

不幸的是,无论我尝试什么(在app.config中有system.net/default代理,有相关的模块类来创建url和凭证,或类似上面的代码)),代理服务器都没有得到这些凭据传递给它。

有什么我可能错过了?我已经尝试在调试模式下从VS2010 Web应用程序运行此应用程序,该应用程序使用默认应用程序池标识从IIS运行。和我们的QA环境中的服务器一样,并且没有任何更改 - 它根本不使用代理,或者只是不发送凭证。

我也试过将PreAuthenticate = trueUseDefaultCredentials设置为true AND k,没有变化。

关于我失踪的任何想法?

回答

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;