2009-07-23 45 views
0

我有以下的在我的web.config(rewritemaps與外部配置給力

<rewriteMaps configSource="Rewrites.config" /> 

我有一個可以通過Web頁面的管理員可以再生一個配置文件定義的應用程序池回收。但是當這個文件改變,然後新的變化不會被拿起,直到應用程序回收。

我的問題是,我希望能夠在文件更改時自動回收應用程序池,這可能嗎?或者是他們更好方法?

也許問題應該是應用程序動態使用重寫映射的另一種方式?

我在集成模式下使用運行在中信任下的IIS7。

感謝 理查德

+0

只要確定:您是否使用Microsoft URL Rewrite Module for IIS 7?它是版本1.1還是2.0? x86或x64? – 2009-08-26 13:11:04

回答

1

回收只是你的應用程序池的黑客方式是添加然後刪除子文件夾。這將觸發應用程序回收。

0

看看這個,如果你有興趣programaticaly回收應用程序池,Recycle App Pool,也有通過腳本

+0

嗨,我不認爲這將在中等信任級別工作,因爲它調用Web根外的EXE。對不起,但這不是我正在尋找的答案 – Rippo 2009-08-21 13:48:20

+0

重新啓動單個應用程序的首選方法是HttpRuntime.UnloadAppDomain()。它不需要應用程序知道其應用程序池。 但是,我相信這需要比中等的更高級別的信任,所以它不會幫助您的情況。在這裏發帖給任何人關注這個對話。 – 2009-08-27 18:21:51

0

底部回收的鏈接如果管理員網頁頁面可以訪問應用程序目錄,只需在寫入外部rewrites.config文件後,web.config重新寫入或修改web.config即可。由於對web.config的更改,應用程序池回收將正常進行,這將最終導致重新讀取外部配置。

有幾個缺點的這種方法:

    在Web場方案
  1. ,你必須重新寫爲場中的每個節點,以獲得一致的狀態在web.config。
  2. 該應用程序的重新加載強制重新編譯該網站,除非您在網絡花園場景中運行,否則可能會導致503錯誤。

更好的方法可能是讓管理員通過網頁正常地重新編寫文件,就像您今天所做的一樣,然後讓他們運行一個腳本,如@Simon建議的。管理員可能已經擁有較高的權限,應該能夠執行一個腳本,該腳本調用iisapp.vbs來回收特定的應用程序池,而不是完整的iisreset。

希望有幫助!
Z