从asp.net aspx页面到ashx处理程序重用相同的会话

本文关键字:程序 会话 处理 ashx net asp aspx | 更新日期: 2023-09-27 17:52:38

我正在尝试从asp.net页面调用ashx处理程序并从处理程序检索xml数据。

  var url = "http://localhost/Settings/MyHandler.ashx?errors=false";
        var request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";
        using (var response = (HttpWebResponse)request.GetResponse())
        {
            using (var stm = response.GetResponseStream())
            {
                using (var sr = new StreamReader(stm))
                {
                    var data= sr.ReadToEnd();
                }
            }
        }

现在,由于asp.net为每个webrequest创建新会话的性质,我无法从asp.net页面重用相同的会话到ashx处理程序。

两个文件来自同一个项目。

如何从asp.net到ashx处理程序重用相同的会话?

请注意:我已经标记了我的处理程序实现IRequireSessionState,所以它有会话。我的问题是aspx页面和ashx处理程序有两个不同的会话。每次当我调用处理程序,它创建一个新的会话。但相反,我必须在我的处理程序内重用aspx页面的相同会话,这意味着我必须在我的页面的相同请求上下文中执行处理程序。

从asp.net aspx页面到ashx处理程序重用相同的会话

如果你指定你的。ashx类使用IRequiresSessionState接口,例如

public class myClass : IHttpHandler, System.Web.SessionState.IRequiresSessionState

{

}

那么你应该能够通过HttpContext.Current.Session

访问当前会话值