难题在于确定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