加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:26:59 所属栏目:asp.Net 来源:网络整理
导读:考虑一个包含以下httpHandlers声明的Web.config文件: httpHandlers add verb="*" path="*" type="MyWebApp.TotalHandlerFactory"//httpHandlers 换句话说,这个处理程序工厂想要“看到”所有传入的请求,以便它有机会处理它们.但是,它不一定要实际处理所有这
考虑一个包含以下httpHandlers声明的Web.config文件:

<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服务仍然正常处理?

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读