在.ashx文件中创建了一个会话,并希望访问.aspx页面,但我发现了空值



我正在HTTP处理程序中创建一个会话,并为其分配某种值,现在我想在。aspx页面中访问此值,但在那里我发现了我的会话的空值,因此我可以处理这个,如果任何人知道答案,请尽快回复这是我的。ashx代码

public class login_handler : IHttpHandler, IReadOnlySessionState,System.Web.SessionState.IRequiresSessionState
{
    string MethodName = string.Empty;
    string CallBackMethodName = string.Empty;
    object Parameter = string.Empty;
    DbUser _DbUser = new DbUser();
    public void ProcessRequest(HttpContext context)
    {
        context.Response.Write(check(context));
        context.Response.Redirect("project.aspx");
    }
    public string check(HttpContext context)
    {
        JsonResponse _response = new JsonResponse();
        System.Web.Script.Serialization.JavaScriptSerializer jSearializer =
                     new System.Web.Script.Serialization.JavaScriptSerializer();
        try
        {
            User _U = new User();
            _U.email_address = context.Request.Params["email_address"].ToString();
            _U.password = context.Request.Params["password"].ToString();
            string company_name = string.Empty;
            int company_id;

            _response.IsSucess = true;
            _response.CallBack = CallBackMethodName;

            _response.ResponseData = _DbUser.check_user(_U);
            context.Session["company_id"] = _DbUser.check_company(_U);
            // in context.Session["company_id"] i got the value 10.
        }
        catch (Exception ex)
        {
            _response.Message = ex.Message;
            _response.IsSucess = false;
        }
        return jSearializer.Serialize(_response);
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

这是我的。aspx代码

     protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["company_id"] != null)
        {

            int a = (int)Session["company_id"];
        }

这里如果(Session[company_id] != null返回false请告诉我如何在这个页面中获得session的值

这是我的网。配置代码

     <sessionState mode="InProc"  customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="junaidcrmConnectionString" />
  </providers>
</sessionState>

试着这样删除IReadOnlySessionState

public class login_handler : IHttpHandler,System.Web.SessionState.IRequiresSessionState
{
     public void ProcessRequest(HttpContext context)
    {
        context.Session["mySession"]="ABC";
    }
}

尝试在web.config中为你的sesstionState添加无cookie属性:

<sessionState mode="InProc"  cookieless="true" />

如果你从你的。ashx页面删除接口"IReadOnlySessionState"你的问题将得到解决。

相关内容

最新更新