小编JLB*_*000的帖子

如何在不使用HttpContext.RemapHandler的情况下设置自定义HttpHandler

这是场景:

我有一个HttpHandler,我想为特定的URL运行,但这些URL没有一致的扩展,所以我不能使用web.config中的httpHandlers映射处理程序.

相反,我有一个自定义HttpModule,我在其中订阅PostAuthenticateRequest,检查一些条件,并使用HttpContext.RemapHandler()分配我的自定义处理程序,如果当前URL符合条件.

这一切都很好,但......

为了提高性能,我只想在尚未分配处理程序的情况下进行URL检查和处理程序分配.我不会厌倦为什么我的处理程序仅在没有分配其他处理程序时应用,但总是如此.

这里真正的问题是,只能测试PostMapRequestHandler上是否已经分配了一个处理程序,到那时,使用RemapHandler()为时已晚,因为会抛出InvalidOperationException(请参阅http://msdn.microsoft.com/ en-us/library/system.web.httpcontext.remaphandler.aspx)

我认为可能在那一点起作用(但不是)是HttpContext.Handler = x; 而不是HttpContext.RemapHandler(x);

当以这种方式设置时,HttpContext.CurrentHandler会更新并且所有内容都显得光彩夺目,但自定义处理程序的ProcessRequest()永远不会被调用.

提前感谢您的想法/意见/见解.

c# iis-7 iis-6

5
推荐指数
1
解决办法
1517
查看次数

标签 统计

c# ×1

iis-6 ×1

iis-7 ×1