• ASP.NET程序从IIS6移植到IIS7时出现500.22错误(转)


    最可能的原因: 
    •    此应用程序在 system.web/httpModules 节中定义配置。 
    可尝试的操作: 
    •    将配置迁移到 system.webServer
    /modules 节。也可以手动这样做,或通过在命令行中使用 AppCmd 来这样做 - 例如,%SystemRoot%system32inetsrvappcmd migrate config "Default Web Site/"。使用 AppCmd 迁移应用程序将使它能够在集成模式下工作,并能继续在经典模式下和以前版本的 IIS 上工作。 
    •    如果您确信可以忽略此错误,则可以通过将 system.webServer
    /validation@validateIntegratedModeConfiguration 设置为 false 来禁用它。 
    •    也可以将应用程序切换到经典模式应用程序池 
    - 例如,%SystemRoot%system32inetsrvappcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"。只有在无法迁移应用程序时才这样做。 
    (将“Default Web Site”和“Classic .NET AppPool”设置为您的应用程序路径及应用程序池名称) 
    链接和更多信息集成模式是在 IIS 
    7.0 上运行 ASP.NET 应用程序的首选模式

    { IIS 的应用程序池根据托管管道模式分了两种类型:集成和经典两种

    集成 .NET 模式下,应用程序不应在 <system.web>/<httpModules> 配置节中指定 ASP.NET 模块组件,而应使用 <system.webServer>/<modules> 配置节来加载 ASP.NET 模块组件。

    .NET 模式 则是我们以前习惯的IIS 6 的方式,没有上述限制。}

    解决方法:

    方法1:在IIS7上配置应用程序池.

    将程序池的模式改为“经典”之后,一切正常。

    (具体方法:开IIS,右边操作里选基本设置,应用程序池旁边点选择,选为Classic .net AppPool,就将管理模式切换为了经典模式就OK了)

    方法2:在IIS7添加我们的模块(modules)

    参考:http://aabs.wordpress.com/2007/11/16/ihttpmodule-not-running-after-conversion-to-iis-7-and-net-35/

    方法3:修改web.config

    再细了解:

    IIS7的Application Pools有两种mode,一种是Integrated,一种是classic。如果使用Integrated模式,那么对自定义的httpModules和httpHandlers就要修改配置文件了,需要将他们转移到<modules>和<hanlders>节里去。

    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 :这个大家都不陌生了。

    如果做一个可以在IIS6和IIS7的两种mode下都可以运行的配置?validateIntegratedModeConfiguration=“false”是做什么用的?有需要的朋友可以在这里查看详情。

    其次,从iis6迁移到iis7上后,有些url rewrite功能可能就不好用了,下面这篇文章讲述了一个hack方法,有效的控制了staticFile handler的职责,实现了像iis6那样的工作方式。

     示例代码:

    <system.web>
       <!-- Modules for IIS 6.0 and IIS 7.0 Classic mode -->  
      <httpModules>          
        <add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/>    
      </httpModules>
       <!-- Handlers for IIS 6.0 and IIS 7.0 Classic mode -->   

        <httpHandlers>

          <addpath="*.myh"verb="GET"type="MyApp.MyHandler" />

        </httpHandlers

    </system.web>
    <system.webServer>
      <!-- Modules for IIS 7.0 Integrated mode -->    
      <modules>        
        <add name="MagicAjaxModule" type="MagicAjax.MagicAjaxModule, MagicAjax"/>    
      </modules>
      <!-- Handlers for IIS 7.0 Integrated mode -->   

       <handlers>

          <addname="MyHandler"path="*.myh"verb="GET"type="MyApp.MyHandler"preCondition="integratedMode" />      

        </handlers>

       <!-- Disable detection of IIS 6.0 / Classic mode ASP.NET configuration -->      
       <validation validateIntegratedModeConfiguration="false" />
     </system.webServer>
  • 相关阅读:
    Objective-C中 Self和 Super详解
    OC类方法和实例方法中的self区别
    Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合
    Objective-C对象初始化 、 实例方法和参数 、 类方法 、 工厂方法 、 单例模式
    Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
    联合与枚举 、 高级指针 、 C语言标准库(一)
    C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体
    C语言----变量及作用域 、 指针 、 指针和数组 、 进程空间 、 字符串
    iOS开发环境C语言基础 数组 函数
    ios开发环境 分支语句 、 循环结构(for) 、 循环结构
  • 原文地址:https://www.cnblogs.com/conghuip/p/3722955.html
Copyright © 2020-2023  润新知