我正在尝试访问作为 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 回答
![?](http://img1.sycdn.imooc.com/545846070001a15002200220-100-100.jpg)
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 个与您相同方向的主题,您可能需要查看这些主题以获取更多信息
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消