gpt4 book ai didi

c# - 如何从 ASP.NET 4.0 Web 应用程序中禁用/删除 WebPageHttpModule?

转载 作者:可可西里 更新时间:2023-11-01 09:08:22 27 4
gpt4 key购买 nike

我正在尝试获取我的 wildcard http handler to handle *.cshtml pages但是请求永远不会到达我的处理程序,因为它看起来像是被 WebPageHttpModule 拦截了,我发现它是通过这个 StackTrace 存在的:

[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 部分):

<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();
}
}
}

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

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

最佳答案

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

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

关于c# - 如何从 ASP.NET 4.0 Web 应用程序中禁用/删除 WebPageHttpModule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com