【问题标题】:Reusing same session from asp.net aspx page to ashx handler重用从 asp.net aspx 页面到 ashx 处理程序的相同会话
【发布时间】:2015-08-14 17:45:40
【问题描述】:

我正在尝试从 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 页面会话,这意味着我必须在我的页面的相同请求上下文中执行处理程序。

【问题讨论】:

    标签: c# asp.net ashx


    【解决方案1】:

    如果您指定您的 .ashx 类使用 IRequiresSessionState 接口,例如

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

    {

    }

    那么你应该可以通过HttpContext.Current.Session访问当前会话值

    【讨论】:

    • 我的处理程序已经实现了 IRequireSessionState,这并不能解决我的问题,因为每次我调用它都会创建新会话的处理程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多