簡體   English   中英

Global.asax沒有為IIS7中的.aspx頁面觸發

[英]Global.asax not firing for .aspx pages in IIS7

我們運行一個鏈接重定向服務,它可以處理以各種格式拋出的鏈接。 例如,這些格式之一是將目標URL附加到鏈接的末尾

HTTP://url.fwd/abcd/http://www.mydomain.com/page.aspx

這是在過去兩年中在Windows Server 2003 / IIS6上運行的,但現在我們正在嘗試遷移到Windows Server 2008 / IIS7設置,它不再起作用了。

我已經讀過URL中冒號的問題,但它不會影響不以'.aspx'結尾的頁面。 例如,

HTTP://url.fwd/abcd/http://www.mydomain.com/page.php

會重定向好。

HTTP://url.fwd/abcd/http//www.mydomain.com/page.aspx

也工作正常(注意缺少第二個冒號)。 盡管URL錯誤,但它確實由我們的URL轉發系統處理,該系統使用自定義404頁面。 在舊系統上,我們遇到了類似的問題,因此在Global.asax> Application_Error中專門編寫了一個方法來處理'.aspx'的情況,並且它工作正常。

在我們的新服務器上,Application_Error永遠不會被Global.asax拋出。 相反,我得到一個System.NotSupportedException - “不支持給定路徑的格式”。 這個System.NotSupportedException是我們在Global.asax頁面中處理的確切情況,因此它絕對不會被觸發。

我已經更改了幾個論壇帖子中指示的注冊表項,HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ ASP.NET VerificationCompatibility = 1 HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ HTTP |參數AllowRestrictedChars = 1

我已經嘗試更改.aspx的Handler Mappings設置。

我已經嘗試將應用程序池設置為使用經典模式而不是集成,但這會導致完全不同的錯誤,其中靜態內容(如圖像和CSS)根本不顯示。 我已經檢查過在Windows功能中啟用了靜態內容,它確實如此。 在經典模式下,'。aspx'請求會拋出兩個錯誤請求錯誤,絕對沒有任何信息。 我得到的錯誤頁面的代碼就是字面意思

錯誤請求<html> <body>錯誤請求</ body> </ html>

更新:我已將靜態文件處理程序映射更改為此頁面中的表單http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6但是正如作者正確指出的那樣,這是一種黑客行為,而不是在IIS7下做事的正確方法。 它還只修復了經典模式下的靜態文件問題。 '.aspx'頁面仍然在經典模式下拋出錯誤。

在這一點上,任何想法或意見都會受到高度贊賞。

IIS 7解決方案

IIS 7中的簡單解決方案是在web.config文件中添加一個設置,以告知IIS通過Global.asax事件處理所有請求。 只需在web.config中添加或更改此部分即可啟用請求:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

在我的情況下,我在生產中發布我的網站,我錯過了復制到服務器App_global.asax.compiled文件。 出於這個原因,沒有觸發Global.asax中的事件。

希望任何幫助這個提示,我失去了8個小時的尋求。

暫無
暫無

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

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