簡體   English   中英

使用Session將數據從.aspx文件傳遞到.ashx文件

[英]Passing data from .aspx file to .ashx file using Session

實際上我正在嘗試將.aspx中的數據發送到.ashx文件。 我在.aspx中使用Session並嘗試在.ashx中獲取會話值,但它顯示異常:: Object引用未設置為對象的實例。

這是我的代碼: -

.aspx代碼

[WebMethod(enableSession:true)]
public static string SetId(string Id)
{
    HttpContext.Current.Session["MId"] = Id.ToString(); Console.Write(" ");
    string session = HttpContext.Current.Session["MId"].ToString(); // Here I am getting value

    //string session = HttpContext.Current.Session["MId"].ToString();
    //BatchReadEmails.EmailProperties session = new BatchReadEmails.EmailProperties();
    //session.MailId = Id.ToString();

    return "Ok";
}

我在字符串會話中獲得了價值。
.ashx代碼: -

 public class ChangeLogHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
            {

                public void ProcessRequest(HttpContext context)
            {
                HttpRequest request = context.Request;
                HttpResponse response = context.Response;
                  string session = "";

                if (context.Session["MId"] != null)
                    session = context.Session["MId"].ToString();
                else
                    session = "Hello India";


            }
            }

在這里顯示session =“Hello India”

我的問題:-

  1. 有沒有辦法從.aspx發送數據到.ashx文件?

  2. 我檢查了很多鏈接所有正在使用如果為null但我已經檢入.aspx文件它顯示值但在.ashx文件中顯示為什么? (對於特殊情況,我們可以使用/寫條件,但我已經檢查過字符串會話有價值。

我錯過了什么? 謝謝

這些是我已經使用過的鏈接: -

如何在.ashx文件中訪問Session?
在c#中訪問上下文會話變量

在aspx中你添加了Session["MId"] 在ashx中你正在閱讀Session["MailId"]

使你使用的密鑰相同。 (即,或者MIdMailId ,但不是兩者)。

建議你定義一個常量來定義這個值,因為它是共享的,那么你可以避免這樣的問題。

這段代碼對我有用

protected void Button1_Click(object sender, EventArgs e)
    {
        Session["MailId"] = "somemail@address.com";
        Response.Redirect("Handler.ashx");
    }

/// ashx中的代碼

public class Handler : IHttpHandler, IRequiresSessionState
{

    public void ProcessRequest (HttpContext context)
    {

        string sessionValue = context.Session["MailId"].ToString();
        context.Response.Write(sessionValue);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

我想知道你是否從ajax調用訪問處理程序

現在它正在工作。我做了這些改變: -

代替

[WebMethod(enableSession:true)] 

我放

[WebMethod(EnableSession = true)]

但兩者都是正確的方法。

我在ajax調用中包含了async: false (我認為在設置會話之前它試圖閱讀它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM