我最近将所有会话检查集成到了global.asax中,但是当我的页面调用我的filehandler.ashx来获取图像时,我已经将它放在那里,但我一直在为会话提供空引用错误(但是只有当它称之为。)
如果我把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
答案 0 :(得分:4)
ASHX要求明确继承会话状态:
public class SomeCustomService : IHttpHandler, IRequiresSessionState
{
// stuff
}