2013-07-26 27 views
0

根據Scott Hanselman的文章,我們總是在我們的Webforms項目中將選項runAllManagedModulesForAllRequests設置爲false。爲什麼在使用Systme.Web.Routing.Route時運行AllManagedModulesForAllRequests爲true

另外我們有幾條routes.MapPageRoute配置成功運行。

現在我們需要添加ICS(互聯網日曆)支持到我們的webform項目。要創建對於用戶來說,這可能是由IHttpHandler的處理乾淨,可讀的網址,我已經添加了以下內容:

routes.Add(new Route("ical/{username}/{somecheck}", new ICalHandler())); 

現在,網址是我們想要的方式,就像這樣:

http://foo.com/ical/username/abc.ics 

在localhost(VS2012,Windows 8)上,runAllManagedModulesForAllRequests可能爲false。

在測試服務器(Win2k8 R2,IIS7.5)上出現「Page Not Found」錯誤。但是,當啓用runAllManagedModulesForAllRequests時,它可以工作。

如果必須這樣,那就這樣吧。但我真的想知道爲什麼...任何人都可以解釋爲什麼我需要啓用此設置?

非常感謝提前。

回答

0

from MSDN

這是到IIS 7製成的更新使得runAllManagedModulesForAllRequests設置不必要的,並且支持ASP.NET路由本身。 (有關此更新的信息,請參閱Microsoft支持文章可用更新使某些IIS 7.0或IIS 7.5處理程序能夠處理URL不以句號結尾的請求。) 如果您的網站在IIS 7上運行且IIS已更新,您不需要將runAllManagedModulesForAllRequests設置爲true。實際上,不建議將其設置爲true,因爲它會增加不必要的處理開銷。當此設置爲true時,所有請求(包括.htm,.jpg和其他靜態文件的請求)也會通過ASP.NET請求管道。 runAllManagedModulesForAllRequests的默認設置爲false。如果該站點的配置文件未明確將runAllManagedModulesForAllRequests設置爲true,則當您在未安裝SP1的Windows 7上運行網站時,IIS 7將不包含所需的更新。因此,路由不起作用,您將看到錯誤。如果您在路由不起作用時遇到問題,可以執行以下操作: 更新Windows 7到SP1,它會將更新添加到IIS 7. 安裝前面列出的Microsoft支持文章中描述的更新。 在該網站的Web.config文件中將runAllManagedModulesForAllRequests設置爲true。請注意,這會爲請求增加一些開銷。

相關問題