簡體   English   中英

當應用程序在集成模式下運行時,為什么IIS7與具有classicmode前提條件的處理程序匹配?

[英]Why is IIS7 matching to handlers with the classicmode precondition when the app is running in integrated mode?

我在一個以集成模式運行的應用程序池中有一個應用程序。 我已經為system.web> httpHandlers添加了一個處理程序,並且我一直得到404結果。 所以我啟用了失敗的請求跟蹤,在請求詳細信息中,我看到多個這樣的entires:

HANDLER_PRECONDITION_NOT_MATCH名稱:PageHandlerFactory-ISAPI-2.0前置條件classicMode,runtimeVersionv2.0,bitness32

前提條件似乎總是經典模式。 當應用程序池在集成模式下運行時,為什么IIS 7會嘗試將請求與這些處理程序匹配?

謝謝!

您的HttpHandler實際上應該在web.config文件的<system.webServer/>部分中配置。

我沒有找到默認設置在classicMode中的原因,但是這篇博客很好地解釋了各種前提條件: http//blogs.iis.net/thomad/archive/2006/11/04/precondition-what.aspx

以下是博客中關於“模式前提條件”的摘錄:

模式前提條件

新的托管模塊和托管處理程序可擴展性允許您將托管代碼(即ASP.NET頁面,模塊和處理程序)直接添加到IIS7管道中。 IIS7需要以特定方式運行工作進程才能使其工作。 它需要加載.NET Framework 2.0,還需要運行一個名為webengine.dll的模塊。 Webengine.dll完成了使用IIS7管道連接托管模塊的所有工作,因為IIS7本身不知道托管代碼。 集成ASP.NET頁面,模塊和處理程序的新方法稱為“集成模式”。

但是仍然有很好的舊方法來連接IIS7中的托管代碼,即通過ISAPI接口。 ASPNET_ISAPI.DLL用於在IIS 5,5.1和6.0中執行此操作。 如果在“經典模式”下運行工作進程,IIS7將繼續支持ISAPI連接。

因此,IIS7引入了兩個前提條件,稱為“integratedMode”和“classicMode”。 具有與之關聯的“integratedMode”前提條件的處理程序將僅加載到ApplicationPool上設置了“integratedMode”屬性的應用程序池中。 具有“classicMode”前提條件的處理程序將僅加載到將integratedMode屬性設置為false的應用程序池中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM