ASP.NET程式從IIS6移植到IIS7時出現500.22錯誤

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   

最可能的原因: 
•    此應用程式在 system.web/httpModules 節中定義配置。 
可嘗試的操作: 
•    將配置遷移到 system.webServer/modules 節。也可以手動這樣做,或通過在命令列中使用 AppCmd 來這樣做 - 例如,%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"。使用 AppCmd 遷移應用程式將使它能夠在整合模式下工作,並能繼續在傳統模式下和以前版本的 IIS 上工作。 
•    如果您確信可以忽略此錯誤,則可以通過將 system.webServer/[email protected] 設定為 false 來禁用它。 
•    也可以將應用程式切換到傳統模式應用程式集區 - 例如,%SystemRoot%\system32\inetsrv\appcmd 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上配置應用程式集區.

方法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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.