webconfig中註冊HttpHandler報錯:檢測到在集成的託管管道模式下不適用的 ASP.NET 設置。

爲何會出現以上錯誤?web

  在IIS7的應用程序池有兩種模式,一種是「集成模式」,一種是「經典模式」。spa

  經典模式 則是咱們之前習慣的IIS 6 的方式。debug

  若是使用集成模式,那麼對自定義的httpModules 和 httpHandlers 就要修改配置文件,須要將他們轉移到<modules>和<hanlders>節裏去。3d

有兩種解決方式:code

  第一種方法、配置應用程序池blog

  在IIS7上配置應用程序池,而且將程序池的模式改成「經典」,以後一切正常。如圖:get

 

第二種:修改配置文件webconfigit

修改前:io

<configuration>
    <system.web>
      <httpHandlers>
        <add path="*.aspx" verb="*" type="CustomerHander, ClassLibrary1" />
      </httpHandlers>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>
</configuration>

 

修改後:class

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.webServer>
    <handlers>
      <add name="CustomerHander" path="*.aspx" verb="*" type="CustomerHander, ClassLibrary1" preCondition="integratedMode" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

如圖項目結構以下:

1.自定義hander是引用的其餘類庫,因此type屬性用逗號分割,前面是:全限定類名 後面是:所在的dll文件(不包括後綴名)

 

2.若是hander在本項目中,如圖:

則web.config文件中的配置以下:

type屬性只填寫類名就能夠了。

 

補充:若是想保留原先設置,更改後能夠設置禁止驗證集成模式(validateIntegrateModeConfiguration="false"),是不會產生錯誤的。如圖

相關文章
相關標籤/搜索