在我的ASP.NET应用程序中,我正在使用WebRequest类,我想使用默认的系统代理。这是我正在使用的代码。
private static bool CheckIfUriIsReachable(string uri)
{
bool reachable = true;
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "HEAD";
var proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultCredentials;
request.Proxy = proxy;
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException)
{
reachable = false;
}
finally
{
if (response != null)
{
response.Close();
}
}
return reachable ;
}
当作为控制台应用程序的一部分运行时,这非常有效 - 它正确地选择系统代理(我假设PC上已登录用户的IE代理),但是,当作为部分运行时,这不起作用一台ASP.NET应用程序在同一台机器上。找不到代理。
我认为这是因为ASP.NET在系统注册表中没有IE代理设置的用户帐户下运行。我试图在web.config文件中包含以下内容,但这不起作用。
<system.net>
<defaultProxy>
<proxy usesystemdefault="true" />
</defaultProxy>
</system.net>
我的问题是如何设置ASP.NET 3.5应用程序以正确使用IE使用的默认代理?
答案 0 :(得分:2)
没有系统范围的默认代理。因此,您只能使用当前用户的配置。如果没有这样的配置,则会出现问题。
您可以尝试在具有代理配置的用户下运行ASP.NET应用程序的应用程序池,或者查看组策略,AFAIK支持设置系统范围的代理。