为了账号安全,请及时绑定邮箱和手机立即绑定

在 ApiController 中访问 WebForms ASPX 页面会话

在 ApiController 中访问 WebForms ASPX 页面会话

C#
慕莱坞森 2021-11-07 20:01:48
我正在尝试访问作为 webform 项目一部分的控制器中的会话。所有会话变量都在 ASPX 页面上设置Session["SESSION_KEY_UI_CULTURE"] = ddlLanguage.SelectedValue;现在,在来自客户端的 API 请求中,我需要读取会话变量并执行任务,但会话始终为空。[RoutePrefix("api/accounts")]    public class AccountsController : ApiController    {        [Route("config")]        [HttpGet]        public IHttpActionResult GetCompanyConfig()        {            if(HttpContext.Current.Session != null)            {                //Session is always NULL            }            return Ok();        }    }我尝试在 WebConfig 文件中删除和添加 SessionStateModule<remove name="Session" /><add name="Session" type="System.Web.SessionState.SessionStateModule"/>
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

ASP.NET Web Api 适用于定义为无状态的 REST 服务。将会话添加回 Web Api 违背了拥有 RESTful API 的目的。您可能需要重新考虑您要实现的目标并找到解决问题的另一种方法。


但是有一种方法可以做你想做的事:


尽管如此,要激活会话,请将以下内容添加到您的 Global.asax


C#


protected void Application_PostAuthorizeRequest() {

 HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);

}

等等


Sub Application_PostAuthorizeRequest()

    HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required)

End Sub

此处和此处有 2 个与您相同方向的主题,您可能需要查看这些主题以获取更多信息


查看完整回答
反对 回复 2021-11-07
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信