【发布时间】:2010-12-14 12:04:30
【问题描述】:
挑战在于确定是否以可靠和正确的方式在 IIS7 中启用了 ASP.NET。
在这种情况下,启用/禁用是通过进入:
Server Manager ->
Roles ->
Web Server (IIS) ->
Remove Role Services ->
Remove ASP.NET
确定这一点的自然位置应该在 applicationHost.config 文件中。但是,在启用或禁用 ASP.NET 后,我们仍然有可用的“ManagedEngine”模块,并且我们仍然在标签中有 isapi 过滤器记录。
目前我能找到的最好方法是检查
然而,这些并没有直接检测到 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 应用程序本身?您是指在特定网站还是一般情况下?
-
检测来自 Winforms 应用程序。
-
一般需要做检测。基本上,如果 ASP.NET 角色服务被删除,这是一个服务器范围的设置,我正在寻找一种可靠的方法来检测这种情况。
-
这里的意图是什么?
-
好的,更明确地说,目的是引导用户了解软件需要在服务器上配置哪些方面,以及这些方面是否已配置。 ASP.NET 是被检查的众多模块之一,包括 IIS 是否可用、BITS 甚至时间同步。只有 ASP.NET 被证明是难以捉摸的。这是第一个脸红的常见问题查找器。