C# 使用会话将数据从.aspx文件传递到.ashx文件

C# 使用会话将数据从.aspx文件传递到.ashx文件,c#,asp.net,.net,session,C#,Asp.net,.net,Session,实际上,我正在尝试将数据从.aspx发送到.ashx文件。我正在.aspx中使用Session并试图获取.ashx中Session的值,但它显示异常:对象引用未设置为对象的实例。 这是我的密码:- .aspx代码 [WebMethod(enableSession:true)] public static string SetId(string Id) { HttpContext.Current.Session["MId"] = Id.ToString(); Console.Write("

实际上,我正在尝试将数据从.aspx发送到.ashx文件。我正在.aspx中使用Session并试图获取.ashx中Session的值,但它显示异常:对象引用未设置为对象的实例。

这是我的密码:-

.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=“你好,印度”

我的问题:-

  • 有没有办法将数据从.aspx发送到.ashx文件

  • 我检查了这么多链接,所有链接都使用if表示null,但我已经签入.aspx文件,它在那里显示值,但在.ashx文件中显示null为什么??(对于例外情况,我们可以使用/write if条件,但我已经检查了字符串会话是否有值

  • 我错过什么了吗?谢谢

    以下是我已经使用过的链接:-



    在aspx中,您正在添加
    会话[“MId”]
    。在ashx中,您正在阅读
    会话[“MailId”]

    使用相同的键(即
    MId
    MailId
    ,但不能同时使用)


    我建议您定义一个常量来定义这个值,因为它是共享的,这样您就可以避免此类问题。

    这段代码对我很有用

    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)]
    
    但这两种方法都是正确的

    我包括
    async:false
    在我的ajax调用中。(我认为在设置会话之前,它试图读取它)

    他已经在使用
    IRequiresessionState
    来完成任务(并允许对会话进行读写访问)I’’很抱歉,这两种方法都是一样的,我尝试了很多种方法,最后都以MailId的形式出现了。但是这两种方法都是一样的。那么,请确保您显示的有问题的代码是您实际使用的有问题的代码,而不是其他有其他问题的代码。请查看发布到这些网站的最佳方法。我注意到您在pag中使用了webmethode来设置会话值。如果您将会话值设置为主页面加载中的某个内容,它是否有效?是的,它即将到来,如果我在页面加载中定义,您确定在调用ashx之前执行webmethod吗?是的,它已被执行。我正在使用'session'变量检查它是否包含某些内容。您可以更新ashx代码-t吗显示的代码不可编译(因为代码只是在类主体中)。请参阅我对SSCCE的评论-如果您需要建设性的帮助,并且人们不会感到沮丧,这一点很重要。