gpt4 book ai didi

asp.net - 是否可以从 Web API 访问 HttpContext.Current.Session

转载 作者:行者123 更新时间:2023-12-03 10:08:36 24 4
gpt4 key购买 nike

是否可以通过 WebAPI 访问 HttpContext.Current.Session ?我们可以让它继承 IRequiresSession 吗?

我有一个通用处理程序在我想删除的 API 调用之后执行 Session 设置。

public void AccountController : ApiController, IRequiresSessionState
{
public void Login()
{
setsession(){}
}
}

最佳答案

从技术上讲,是的,虽然我真的不建议这种做法 - REST API 应该是完全无状态的(cookies 和其他客户端状态是可以的)。

如果你绝对必须这样做,你可以像这样获取 HTTP 上下文:

var context = Request.Properties["MS_HttpContext"] as HttpContext;

此时您只需使用它的 Session属性来获取 session 。

请注意,这违反了 System.Net.Http 假设的某些合约。 - 具体来说,这意味着您的 API Controller 永远无法自托管,因为它们与 ASP.NET 耦合。如果您对此感到满意,并且事实上您的 API Controller 可能无法从 Web 场正常工作,除非您重新构建所有内容以使用分布式 session - 那么,就去做吧。

附言也可以使用 IRequiresSessionState ,但是不能在 Controller 本身上使用,需要在 HttpControllerHandler上使用并将其设置为 RouteHandler .在 this MSDN thread 中讨论了该方法。 .同样,我不能强烈推荐 反对 这个想法违反了 Web API 的基本原则 - 但是,如果您有充分的理由,那么它是另一种更可重用的选择。

关于asp.net - 是否可以从 Web API 访问 HttpContext.Current.Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com