代码之家  ›  专栏  ›  技术社区  ›  Dbl

是否有WebMethod的替代方法来绕过回发但访问会话

  •  3
  • Dbl  · 技术社区  · 10 年前

    因此,我正在努力提高ASP.Net Webforms应用程序的性能。

    和往常一样,后援会尽最大努力减缓表现。我是来了解WebMethod调用的,我也设法做到了这一点。然而,对于我的特定场景,我需要访问Session,这在静态方法中显然是不可能的。

    所以现在我的想法是编写一个HttpModule来解决这个问题。然而,这似乎是一项相当大的努力,所以我想知道你们中是否有人知道这项任务的开箱即用解决方案?

    提醒你,这只是一个关于某些东西是否已经存在的问题。编写模块非常简单。我只是想避免重新发明轮子。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Dbl    10 年前

    如果问题是从静态成员访问Session对象,则可以使用 HttpContext.Current.Session["..."]

    [WebMethod(EnableSession = true)]
    public static string Test()
    {
        string s = HttpContext.Current.Session["Test"].ToString();
        return s;
    }
    

    参考 here 有关文档 HttpContext.Current Property ; 在该房产内,您还拥有 Request , Response 等等

    如@Martin Smelworse所建议

    无论您在哪里设置会话,都需要 EnableSessionState="ReadOnly" Async="true" 在页面声明中