确定ASP.Net是否正确注册

Chr*_*ell 28 asp.net aspnet-regiis.exe

有没有人有确定ASP.Net是否在您的计算机上正确注册的防弹方法(理想情况下是C#!)

我正在为ASP.Net应用程序编写安装程序,我需要知道是否应该运行aspnet_regiis.

目前我们总是运行aspnet_regiis- 我确保ASP.Net已正确注册,但这不合需要,因为它会提示重新启动所有应用程序池.

网上有几个有用的页面(例如http://www.codeproject.com/KB/cs/iisdetection.aspx),但正如该帖子中的评论所示,注册表通常会报​​告该ASP. Net已注册但aspnet_regiis仍需要运行才能配置IIS.用户'JonB'发布了一些看起来应该适用于IIS6(以及启用了IIS6兼容性的IIS7)的东西,但我仍然需要为IIS 7编写单独的检测代码,同时禁用IIS6兼容模式.

那么有人已经破解了这个坚果吗?如果是这样,请告诉我们,因为这样可以节省时间.否则,我将尝试将C++解决方案移植到IIS6的C#中,对于IIS7,我将查看for 的<isapiCgiRestriction>部分applicationHosts.config

<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
Run Code Online (Sandbox Code Playgroud)

最后一个问题...

有谁知道Windows 7中的内容是否相同/不同?

Gon*_*alo 10

首先,我会尝试跑步aspnet_regiis -lv.这应该给你一个输出,如:

1.1.4322.0      Valid           C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
2.0.50727.0     Valid           c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
Run Code Online (Sandbox Code Playgroud)

您可以轻松解析以验证您的目标版本是否已安装且有效.如果不是,你将不得不走这aspnet_regiis -i条路.

此外,鉴于您可以在C#中执行此操作,您可以将测试页添加到ASP.NET应用程序中.在您通常认为成功安装之后,请HttpWebRequest在该测试页面上执行操作.页面本身可以像空页一样简单,也可以像运行安装的自检一样复杂(文件/文件夹权限,数据库配置等),如果一切正常,只会返回HTTP 200.任何超时或错误都表示安装不正确.然后,可选择删除测试页面.