有没有人有一个Bulletproof方法(在C#理想!)确定ASP.Net是否正确注册在您的计算机上?
我为ASP.Net应用程序编写安装程序,我需要知道是否应该运行aspnet_regiis。
目前我们总是运行aspnet_regiis – 我确保ASP.Net注册正确,但这不是所希望的,因为它提示重新启动所有的应用程序池。
在网上有几个有用的网页(例如http://www.codeproject.com/KB/cs/iisdetection.aspx),但正如在那篇文章中的评论,注册表报告ASP.Net注册,但是仍然需要运行aspnet_regiis来配置IIS。用户’JonB’发布的东西看起来像它应该适用于IIS6(和IIS7启用IIS6兼容性),但我仍然需要为IIS 7编写单独的检测代码与IIS6兼容模式禁用。
所以有谁破解了这个螺母已经?如果是这样,请让我们知道,因为它将是一个节省时间。否则,我将尝试和端口C解决方案到C#为IIS6和IIS7我将看看检查< 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" />
最后一个问题…
有谁知道在Windows 7中的东西是否相同/不同?
解决方法
首先我试试运行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
您可以轻松地解析以验证目标版本是否已安装并且有效。如果不是,你必须去aspnet_regiis -i路由。
此外,鉴于您可以在C#中执行此检查,您可以向ASP.NET应用程序添加一个测试页。在通常认为成功安装之后,在该测试页面上执行HttpWebRequest。页面本身可以像空白页一样简单,并且像运行安装的自检(文件/文件夹权限,数据库配置等)一样复杂,如果一切正常,则只返回HTTP 200。任何超时或错误都表示安装不正确。然后,可选择删除测试页。