c# - global.asax 中的 session 检查与 filehandler.ashx 混淆

标签 c# asp.net session global-asax

我最近将我所有的 session 检查集成到 global.asax 中,它工作正常但是因为当我的页面调用我的 filehandler.ashx 来获取图像时我把它放在那里我不断收到 session 的空引用错误(但是只有当它调用它时)。

如果我在它周围放置一个 try/catch,图像将会加载,但显然这不是一个好的解决方案。

 void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        try
        {
            HttpContext context = HttpContext.Current;
            if (context.Session["tid"] == null)  //Null Reference here
            {

理想情况下,我正在寻找在回发或第一次加载时触发的事件,该事件不会影响文件处理程序。我想如果我做不到,我总是可以像以前一样将它放在 master_page init 中(这是不好的做法吗?)因为这似乎工作正常。我只是认为 global.asax 会是一个更简洁的解决方案。

对接下来要尝试什么有什么想法吗?

到目前为止我已经尝试过的事件..

Application_AcquireRequestState

Application_PostAcquireRequestState

Application_PreRequestHandlerExecute

Application_PreSendRequestContent

最佳答案

ASHX 要求显式继承 session 状态:

public class SomeCustomService : IHttpHandler, IRequiresSessionState
{
    // stuff
}

关于c# - global.asax 中的 session 检查与 filehandler.ashx 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056739/

相关文章:

c# - 对 SSPI 的调用失败,请参阅内部异常 - 无法联系本地安全机构

c# - 如何在C#中使用多线程下载单个文件

c# - 如何计算 future 指定时间段的日期?

android - 如何清理在 WebView 中创建的 session ?

python - SQLAlchemy - 有没有办法查看当前 session 中的内容?

php - 回显 SID 有什么危险

c# - 如何在 EF6 Code First 中将泛型类型与数据库上下文一起使用

c# - 在扩展方法中使用 .net core 依赖项

asp.net - 使用 SignalR 和 Azure 的实时通知系统

asp.net - 如何更改回发时的 QueryString?