gpt4 book ai didi

asp.net - 如何获取对默认 ASP.NET 页面处理程序或 Web 服务处理程序的引用?

转载 作者:行者123 更新时间:2023-12-04 20:18:32 26 4
gpt4 key购买 nike

考虑一个 Web.config包含以下内容的文件 httpHandlers宣言:

<httpHandlers>
<add verb="*" path="*" type="MyWebApp.TotalHandlerFactory"/>
</httpHandlers>

换句话说,这个处理程序工厂想要“看到”所有传入的请求,以便有机会处理它们。但是,它不一定要实际处理所有这些,只需要满足特定运行时条件的那些:
public sealed class TotalHandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
if (some condition is true)
return new MySpecialHttpHandler();

return null;
}

public void ReleaseHandler(IHttpHandler handler) { }
}

但是,这样做会完全覆盖默认的 ASP.NET 处理程序,这意味着 ASP.NET 页面和 Web 服务不再有效。对于不满足“if”中的“某些条件”的每个 URL,我只会得到一个空白页面。因此,似乎返回 null是错误的做法。

那么我需要返回什么,以便 ASP.NET 页面和 Web 服务仍能正常处理?

最佳答案

我原以为最简单的方法是让您的类(class)继承自 System.Web.UI.PageHandlerFactory然后在 else 子句中调用 base.GetHandler() .

public sealed class TotalHandlerFactory : System.Web.UI.PageHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
if (some condition is true)
return new MySpecialHttpHandler();
else
return base.GetHandler(context, requestType, url, pathTranslated)
}
}

关于asp.net - 如何获取对默认 ASP.NET 页面处理程序或 Web 服务处理程序的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162632/

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