【问题标题】:How to use the proxy used in Internet Explorer in an ASP.NET application如何在 ASP.NET 应用程序中使用 Internet Explorer 中使用的代理
【发布时间】:2011-04-22 14:01:00
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net iis proxy


    【解决方案1】:

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

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

    【讨论】:

    • 这完全正确。我们使用 Windows 身份验证,我们将面临使用代理设置在该机器上设置每个用户帐户。更好的解决方案是应用池级别的一个帐户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多