我試圖讓我的wildcard http handler to handle *.cshtml pages但因爲它看起來像它的被截獲WebPageHttpModule,我發現通過該堆棧跟蹤存在的要求從來沒有達到我的處理程序:如何禁用/從ASP.NET 4.0 Web應用程序中刪除WebPageHttpModule?
[HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.]
System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application, Action`1 monitorFile, Func`2 fileExists, Func`2 createInstance, IEnumerable`1 supportedExtensions) +88
System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application) +287
System.Web.WebPages.WebPageHttpModule.StartApplication(HttpApplication application, Action`1 executeStartPage, EventHandler applicationStart) +113
System.Web.WebPages.WebPageHttpModule.StartApplication(HttpApplication application) +71
System.Web.WebPages.WebPageHttpModule.Init(HttpApplication application) +156
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +431
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253
[HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8972180
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256
我試圖使用禁用所有的HttpModules Web.Config中,但沒有任何效果,(它也不會出現在IIS的HttpModules部分):
<system.web>
<httpModules>
<clear/>
</httpModules>
</system.web>
....
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<clear/>
</modules>
</system.webServer>
與ILSpy狩獵周圍揭示System.Web.WebPages.dll下面的代碼是什麼登記WebPageHttpModule:
namespace System.Web.WebPages
{
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
private static bool _startWasCalled;
public static void Start()
{
if (PreApplicationStartCode._startWasCalled)
{
return;
}
PreApplicationStartCode._startWasCalled = true;
WebPageHttpHandler.RegisterExtension("cshtml");
WebPageHttpHandler.RegisterExtension("vbhtml");
PageParser.EnableLongStringsAsResources = false;
DynamicModuleUtility.RegisterModule(typeof(WebPageHttpModule));
ScopeStorage.CurrentProvider = new AspNetRequestScopeStorageProvider();
}
}
}
但它是一個香草.NET 4.0應用程序,我沒有任何System.Web.WebPages一個參考,MVC或剃刀的dll我只引用的System.Web。
那麼這些程序集是如何加載的,爲什麼WebPageHttpModule被註冊,我該如何刪除/禁用它?
這不是爲我工作。我仍然以404結尾爲所有以'.cshtml'結尾的網址我試圖編寫一個源代碼瀏覽器,並且我不能讓它失敗*任何* URL擴展名。有什麼建議麼? –
哦,我忘了提及,我有這個單獨的問題:http://stackoverflow.com/questions/7210515/routing-requests-that-end-in-cshtml-to-a-controller –