错误代码参考:http://support.microsoft.com/kb/943891/zh-cn
从上面看到这个问题是因为:httpModules 、httpHandlers 没有配置对,最后在网上查找是因为IIS7 的应用程序池根据托管管道模式分了两种模式:集成和经典。
为了解决这个问题,有2种方式,一,如果又要让现在的程序支持IIS6 和IIS7那么就得把IIS7下面设置为经典模式。二,如果该程序只在IIS7下面跑那么就必须得修改WEB.CONFIG文件了。
IIS7 被分成了很多个组件,默认是不安装的,你需要安装这些组件。
下图对应的功能,可以通过以下步骤打开:
开始 --> 控制面板 --> 程序 --> 打开或关闭 Windows 功能
下述配置功能你可以在
控制面板 --> 管理工具 -->Internet 信息服务(IIS)管理器 程序中找到
打开 Internet 信息服务(IIS)管理器 后,在中间部分的下部,可以看到 身份验证 配置项,双击就是如下界面:
刚才我们增加的几个身份验证,需要在你要调试的站点上启用。
注意:是你要调试的站点,而不是你要调试的应用程序目录!
在默认情况下新建的站点是集成模式,那么该如何修改成经典模式呢?如下图:
双击后:
一个可以选择其.NET 的版本,一个可以选择模式。
-----------------------------------------------------------------------------------
如果想让IIS7设置为集成模式,那么就必须修改配置文件了。
因为使用Integrated(集成)模式,那么对自定义的httpModules和httpHandlers就要修改配置文件了,需要将他们转移到 <system.webServer>下的<modules>和<handlers节里去。
那么说一下IIS7的两种模式和IIS6的区别:
IIS7.0 Integrated mode:asp.net的modules和handlers从<system.webServer>下的<modules>和<handlers>里读取,以前的<system.web>下的<httpModules>和<httpHandlers>配置节会被忽略,如果设置禁止验证(disabled validation),是不会产生错误的。
IIS7.0 Classic mode:与以上情况是相反的,<modules>和<handlers>会被忽略。
IIS6.0 :ASP.NET 的modules和handlers都是从<httpModules> 和<httpHandlers>进行加载的。
如果想在IIS7和IIS6都能跑的程序参见:http://mvolo.com/creating-portable-aspnet-applications-that-work-on-iis-60-iis-70-classic-and-iis-70-integrated-modes