難題在於確定ASP.NET是否以可靠和正確的方式在IIS7中啓用。如何檢測ASP.NET是否在IIS 7中啓用
Server Manager ->
Roles ->
Web Server (IIS) ->
Remove Role Services ->
Remove ASP.NET
的自然場所,以確定這應該是applicationHost.config文件中:
啓用/禁用在這種情況下,通過進入完成。但是,在ASP.NET啓用或禁用的情況下,我們仍然有「ManagedEngine」模塊可用,並且我們仍然在標記中包含isapi過濾器記錄。
目前我能找到的最好方法是檢查<isapiCgiRestriction>標記是否包含aspnet_isapi.dll,或者ASPNET跟蹤提供程序是否可用。
但是,這些都沒有直接檢測到ASP.NET配置的存在,只是可能會被用戶重新配置的副作用。
我寧願通過檢查IIS配置/設定,而非操作系統本身,如果可能的話,雖然列舉了角色在服務器上&服務是可以接受的,如果我們能保證這個技術會一直努力,只要IIS7做到這一點用來。
更新
感謝您的答覆。明確說明我想要做什麼,我將服務器配置中各個位置的設置調整爲單一(只讀)視圖,以顯示用戶需要配置的軟件才能工作。
一個我需要帶的設置是這樣的一個:紅色
的一個突出。
我不需要操縱設置,只是重現它。我想查看用戶是否在將IIS角色添加到服務器時檢查了ASP.NET框,因爲在本例中他們顯然沒有。
我想通過在IIS中查看可靠的東西來做到這一點,而不是枚舉角色服務,因爲我不想在不需要的檢查上添加任何平臺特定的依賴關係。我不知道是否有可能在沒有角色/服務基礎架構的服務器上安裝IIS7,但我更願意不擔心它。我也有一大堆庫用於清理IIS。
但是,我也很難找到如何枚舉角色/服務,所以如果有一個解決方案涉及到這樣做,它肯定會很有用,並且比檢查副作用好得多ASPNET跟蹤提供程序在附近。
不幸的是,如果您沒有檢查ASP.NET按鈕,仍然可以獲取IIS applicationHost.config文件中的ManagedEngine模塊,因此它不是可靠的檢查。您也可以將ASP.NET映射爲isapi過濾器,因此檢查它們是不夠的。這些東西在安裝ASP.NET但已被刪除的情況下尤其成問題。
看起來最好的解決方案是檢查角色服務。不過,這方面的API信息看起來很罕見,因此呼籲幫助。
這是一個控制檯/ Windows窗體應用程序或從IIS應用程序本身?你是指在一個特定的網站或一般? – Kev 2010-12-14 13:06:43
檢測來自Winforms應用程序。 – 2010-12-14 13:37:22
檢測一般需要完成。基本上,如果ASP.NET角色服務被刪除,這是一個服務器範圍的設置,我以可靠的方式來檢測這種情況。 – 2010-12-14 13:38:42