ASHX中的ASP.NET会话问题以及使用谷歌浏览器和Firefox

时间:2010-09-07 12:55:24

标签: asp.net handler

我不确定为什么在使用IE时,检索会话值工作得很好,但是在使用Google Chrome和Firefox时,它没有返回任何内容?

我已经在通用处理程序类中包含了IRequiresSessionState / IReadOnlySessionState,但仍然无效。

所以我最后的办法是将会话值添加为通用处理程序中的查询字符串。

但我仍然想知道Chrome和Firefox中的原因和错误是什么?感谢。

更新: 这是我处理我的Seesion SessionManager

的方式

它在ASPX页面以及IE,Chrome和Firefox中完美运行

但在我的ASHX页面中使用时。下面的示例代码

<%@ WebHandler Language="C#" Class="Upload" %>

using System;
using System.Web;
using System.Web.SessionState;
using System.IO;

public class Upload : IHttpHandler, IReadOnlySessionState
{
    SessionManager sm;

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Expires = -1;

        sm = new SessionManager();

        try
        {
            HttpPostedFile postedFile = context.Request.Files["Filedata"];

            string uploadedas = string.Empty;
            if (context.Request.QueryString["as"] != null)
            {
                uploadedas = context.Request.QueryString["as"];
            }

            string username = sm.Username;
            string sessionid = sm.SessionID;

            //
            // MORE CODES HERE
            //

            context.Response.Write(response);
            context.Response.StatusCode = 200;
        }
        catch (Exception ex)
        {
            context.Response.Write("Error: " + ex.Message + "\r\n\r\n" + ex.StackTrace);
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}

sm.Username和sm.SessionID在使用Chrome和Firefox时返回一个emptry字符串..但正如我之前所说,即使在不同的浏览器中,这些也在ASPX页面中完美运行。

2 个答案:

答案 0 :(得分:0)

会话是一种cookie。确保您在所有正在测试的浏览器上启用了Cookie。

答案 1 :(得分:0)

你是如何从你的页面调用你的ashx的?你能给出样本代码吗?

你使用Flash来呼叫ashx吗? Flash有一个cookie错误,总是将IE cookie发送到服务器,无论你使用哪种浏览器,这都会使得访问ASP.NET Session变得很困难,因为它依赖于cookie。