C# 如何从ASP.NET 4.0 web应用程序中禁用/删除WebPageHttpModule?

C# 如何从ASP.NET 4.0 web应用程序中禁用/删除WebPageHttpModule?,c#,asp.net,asp.net-mvc-3,razor,asp.net-webpages,C#,Asp.net,Asp.net Mvc 3,Razor,Asp.net Webpages,我正在尝试获取我的请求,但请求从未到达我的处理程序,因为它似乎被我通过此StackTrace发现存在的WebPageHttpModule拦截: [HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.] System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application, A

我正在尝试获取我的请求,但请求从未到达我的处理程序,因为它似乎被我通过此StackTrace发现存在的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
我尝试使用Web.Config禁用所有HttpModules,但没有效果(它也不会出现在IIS HttpModules部分):

但它是一个普通的.NET 4.0应用程序,我没有对任何System.Web.WebPages、MVC或Razor DLL的引用,我只引用了System.Web


那么,这些程序集是如何加载的,为什么要注册WebPageHttpModule以及如何删除/禁用它呢?

刚刚仔细研究了一下,其中的一些代码是。。至少可以说很粗糙

以下是WebPageHttpHandler中的一段代码:

namespace System.Web.WebPages
{
  public class WebPageHttpHandler : IHttpHandler, IRequiresSessionState
  {
    private static List<string> _supportedExtensions = new List<string>();

    public static void RegisterExtension(string extension)
    {
      WebPageHttpHandler._supportedExtensions.Add(extension);
    }

  // [snip]
}
namespace System.Web.webpage
{
公共类WebPageHttpHandler:IHttpHandler,iRequestSessionState
{
私有静态列表_supportedExtensions=新列表();
公共静态无效注册表扩展(字符串扩展)
{
WebPageHttpHandler.\u支持扩展。添加(扩展);
}
//[剪报]
}

如果您愿意使用反射并且在完全信任的情况下运行,则可以通过反射访问WebPageHttpHandler的_supportedExtensions静态私有字段,并从您自己的PreApplicationInit处理程序的列表中删除cshtml和vbhtml项。从DynamicModuleUtility中可以看到,删除WebPageHttpHandlerdler注册比这更复杂。

如果您试图关闭ASP.NET网页,可以在应用程序设置中设置此标志:

<add key="webpages:Enabled" value="false" />


这对我不起作用。对于所有以
结尾的URL,我仍然使用404。cshtml
我正在尝试编写一个源代码浏览器,并且我不能让它在任何URL扩展上失败。有什么建议吗?哦,我忘了提及我对此有一个单独的问题:
namespace System.Web.WebPages
{
  public class WebPageHttpHandler : IHttpHandler, IRequiresSessionState
  {
    private static List<string> _supportedExtensions = new List<string>();

    public static void RegisterExtension(string extension)
    {
      WebPageHttpHandler._supportedExtensions.Add(extension);
    }

  // [snip]
}
<add key="webpages:Enabled" value="false" />