2008-10-09 28 views
56

我需要配置一個網站,通過代理訪問另一臺機器上的web服務。我可以將網站配置爲使用代理服務器,但我無法找到指定代理服務器要求的憑據的方式,這可能嗎?這是我目前的配置:是否可以在你的web.config中指定代理憑證?

<defaultProxy useDefaultCredentials="false"> 
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" /> 
</defaultProxy> 

我知道你可以通過代碼做到這一點,但該網站正在運行的軟件是閉源的CMS,所以我不能做到這一點。

有沒有辦法做到這一點? MSDN幫助不大。

回答

92

是的,可以在不修改當前代碼的情況下指定您自己的憑據。儘管如此,它仍然需要一小段代碼。

創建這個類叫做SomeAssembly.dll組件:

namespace SomeNameSpace 
{ 
    public class MyProxy : IWebProxy 
    { 
     public ICredentials Credentials 
     { 
      get { return new NetworkCredential("user", "password"); } 
      //or get { return new NetworkCredential("user", "password","domain"); } 
      set { } 
     } 

     public Uri GetProxy(Uri destination) 
     { 
      return new Uri("http://my.proxy:8080"); 
     } 

     public bool IsBypassed(Uri host) 
     { 
      return false; 
     } 
    } 
} 

添加到您的配置文件:

<defaultProxy enabled="true" useDefaultCredentials="false"> 
    <module type = "SomeNameSpace.MyProxy, SomeAssembly" /> 
</defaultProxy> 

這種 「內噴射」 列表中的一個新的代理,並且由於沒有默認憑證,因此WebRequest類將首先調用您的代碼並請求您自己的憑證。您需要將組裝的SomeAssembly放置在CMS應用程序的bin目錄中。

這是一個靜態代碼,爲了獲得所有的字符串,比如用戶名,密碼和URL,你可能需要實現自己的ConfigurationSection,或者在AppSettings中添加一些信息,這樣更容易。

+0

我打算把這個標記爲答案,因爲它看起來好像它應該工作,但是我仍然遇到連接問題,到ISA Server比什麼都重要.. – spmason 2008-10-13 20:09:00

+0

這真是太好了。 – Lalit 2010-05-25 13:18:11

1

目錄服務/ LDAP查找可用於實現此目的。它涉及基礎設施級別的一些變更,但大多數生產環境都有這樣的設置

+0

我不知道這將如何幫助。服務器不在同一個域上,如果這很重要的話。 – spmason 2008-10-09 12:31:28

14

雖然我還沒有找到指定在web.config代理網絡憑據的好方法,你可能會發現,你仍然可以使用非編碼解決方案,通過包括這你的web.config:

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy proxyaddress="proxyAddress" usesystemdefault="True"/> 
    </defaultProxy> 
    </system.net> 

實現這一目標的關鍵因素是更改IIS設置,確保運行該進程的帳戶可以訪問代理服務器。 如果您的進程在LocalService或NetworkService下運行,那麼這可能不起作用。機會是,你會想要一個域帳戶。

2

您可以通過在Windows證書管理添加代理服務器的一個新的通用憑據指定憑據:

1在web.config中

<system.net>  
<defaultProxy enabled="true" useDefaultCredentials="true">  
<proxy usesystemdefault="True" />  
</defaultProxy>  
</system.net> 
  • 在憑據經理>>添加通用憑據
  • Internet或網絡地址:您的代理地址
    用戶名:您的用戶名
    密碼:你通過

    這個配置對我有用,沒有改變代碼。

    相關問題