使用HttpModule从通用处理程序中获取HttpContext。

时间:2019-05-14 19:35:01

标签: c# asp.net httpmodule asp.net-4.5

我正在研究HttpModule类,用于收集ASP.Net应用程序的性能和运行时数据。

我已经找到了如何访问Session以获得有关ASPX文件和实现IHttpHandler的类(例如自定义Web资源或axd文件)的信息,但是我找不到一种方法来访问在通用处理程序(HttpContext文件)上传递到ProcessRequest()的{​​{1}}实例。

ASHX抛出Application.Session

  

(会话状态在此上下文中不可用)

HttpException

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您在项目中添加新的通用处理程序,它应该像这样

public class Handler1 : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

context作为您可以使用的HttpContext传递。

如果您需要阅读会话,则需要添加IReadOnlySessionStateIRequiresSessionState(区别为see here

using System.Web.SessionState;

public class Handler1 : IHttpHandler, IReadOnlySessionState