如何在ASP.NET应用程序中使用Internet Explorer中使用的代理

时间:2011-04-22 14:01:01

标签: c# asp.net iis proxy

在我的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使用的默认代理?

1 个答案:

答案 0 :(得分:2)

没有系统范围的默认代理。因此,您只能使用当前用户的配置。如果没有这样的配置,则会出现问题。

您可以尝试在具有代理配置的用户下运行ASP.NET应用程序的应用程序池,或者查看组策略,AFAIK支持设置系统范围的代理。