2011-04-22 63 views
2

在我的ASP.NET應用程序中,我使用的是WebRequest類,我想使用默認系統代理。這是我正在使用的代碼。如何在ASP.NET應用程序中使用Internet Explorer中使用的代理

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 ; 
} 

時作爲控制檯應用程序的一部分運行該工作得很好 - 它正確地拿起系統代理(我假定IE代理服務器的登入的用戶在PC上),然而,這不起作用當在同一臺機器上作爲ASP.NET應用程序的一部分運行時。沒有找到代理。

我認爲這是因爲ASP.NET在系統註冊表中沒有IE代理設置的用戶帳戶下運行。我試圖在web.config文件中包含以下內容,但這不起作用。

<system.net> 
    <defaultProxy> 
     <proxy usesystemdefault="true" /> 
    </defaultProxy> 
</system.net> 

我的問題是如何設置一個ASP.NET 3.5應用程序來正確使用IE使用的默認代理?

回答

2

沒有系統範圍的默認代理。因此,您只能使用當前用戶的配置。如果沒有這樣的配置,就有問題。

您可以嘗試在具有代理配置的用戶下運行ASP.NET應用程序的應用程序池,或查看組策略,AFAIK支持設置系統級代理。

+0

這是完全正確的。我們使用Windows身份驗證,並使用代理設置來設置該機器上的每個用戶帳戶。更好的解決方案是應用程序池級別的一個帳戶。 – 2011-04-22 16:32:40

相關問題