在 ApiController 中访问 WebForms ASPX 页面会话

我正在尝试访问作为 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"/>


慕莱坞森
浏览 201回答 1
1回答

GCT1015

ASP.NET Web Api 适用于定义为无状态的 REST 服务。将会话添加回 Web Api 违背了拥有 RESTful API 的目的。您可能需要重新考虑您要实现的目标并找到解决问题的另一种方法。但是有一种方法可以做你想做的事:尽管如此,要激活会话,请将以下内容添加到您的 Global.asaxC#protected void Application_PostAuthorizeRequest() {&nbsp;HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);}等等Sub Application_PostAuthorizeRequest()&nbsp; &nbsp; HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required)End Sub此处和此处有 2 个与您相同方向的主题,您可能需要查看这些主题以获取更多信息
打开App,查看更多内容
随时随地看视频慕课网APP