【问题标题】:Access WebForms ASPX Page Session in ApiController在 ApiController 中访问 WebForms ASPX 页面会话
【发布时间】:2018-07-31 07:42:53
【问题描述】:

我正在尝试访问属于 Web 表单项目一部分的控制器中的会话。所有会话变量都在 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"/>

【问题讨论】:

    标签: c# session asp.net-web-api webforms session-state


    【解决方案1】:

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

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

    要激活 Session,但仍将以下内容添加到您的 Global.asax

    C#

    protected void Application_PostAuthorizeRequest() {
     HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
    }
    

    VB

    Sub Application_PostAuthorizeRequest()
        HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required)
    End Sub
    

    Herehere 是两个方向相同的主题,您可能希望查看更多信息

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 2014-09-12
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多