3

我目前正在关注与此类似的内容:

 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两者都设置UseDefaultCredentialstrueAND k,但没有任何变化。

关于我所缺少的任何想法?

4

1 回答 1

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;
于 2013-04-02T21:48:58.423 回答