我正在開發一個管理HTTP模塊,它將攔截IIS 7的請求和響應。攔截的消息將根據一組自定義過濾器的業務規則進行修改。業務規則將存儲在配置文件中。如何部署受管理的HTTP模塊全網站?
該消息必須被攔截的網站廣泛。這包括任何作爲網站子項存在的應用程序或虛擬目錄。我的第一個嘗試是將HTTP模塊程序集安裝到所需網站的bin目錄中(例如,默認網站的C:\ inetpub \ wwwroot \ bin)。
一旦安裝我修改網站的web.config文件的<compilation>
元素引用的程序集,像這樣:
<compilation debug="false">
<assemblies>
<add assembly="Company.Product.Module, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" />
</assemblies>
</compilation>
我還修改了網站的web.config文件的<modules>
元素。
這適用於網站下的大多數內容。但是,如果有網站(例如,/ wwwroot文件/所有MyApplication)根據該Web應用程序導航到任何資源時我收到以下錯誤下配置的應用程序:
無法加載文件或程序集 「公司。 Product.Module, Version = 1.0.0.0,Culture = neutral, PublicKeyToken = xxxxxxxxxxxxxxxx'或 其依賴項之一。系統 找不到指定的文件。
有兩種方法,我知道解決這個問題:
選項1:
複製HTTP模塊組裝和所有相關組件到每個應用程序的bin目錄。我相信我也需要從父目錄複製配置信息。隨着越來越多的應用程序被添加到網站上,這可能會成爲管理的噩夢。
選項2:
安裝HTTP模塊組件和在GAC所有依賴程序集。這似乎工作得很好,避免了很多管理開銷,但是,配置信息在哪裏存在?如果在網站的web.config文件中,這些信息是在所有子應用程序中繼承的?
部署託管HTTP模塊站點範圍的推薦方法是什麼?應如何處理配置以便所有配置都位於中央位置?
通過在正確的軌道上,你的意思是安裝在GA中C,還是安裝在多個bin目錄中? – 2010-11-06 19:14:46
在GAC中安裝 – 2010-11-06 19:30:34
我不確定是否允許修改machine.config文件。另外,我希望能夠支持不同網站的不同配置。因此,我認爲這個信息的理想位置在web.config中。我需要調查一下,看看我的配置設置是否可以在網站中的所有應用程序中正確地繼承。 – 2010-11-08 03:58:49