gpt4 book ai didi

c# - OWIN 中间件可以使用 http session 吗?

转载 作者:IT王子 更新时间:2023-10-29 04:37:51 27 4
gpt4 key购买 nike

我为 ASP.NET 和 SignalR 复制了一些代码,我决定将其重写为 OWIN 中间件以删除此重复。

运行它后,我注意到 HttpContext.Current.Session 为 null,并且我没有在我的中间件拥有的 IOwinContext 上看到任何 session 对象。

是否可以从 OWIN 访问 http session ?

最佳答案

是的,但它确实是一个 hack。它也不适用于 SignalR,因为 SignalR 必须在获取 session 之前运行以防止长 session 锁定。

执行此操作以启用任何请求的 session :

public static class AspNetSessionExtensions
{
public static IAppBuilder RequireAspNetSession(this IAppBuilder app)
{
app.Use((context, next) =>
{
// Depending on the handler the request gets mapped to, session might not be enabled. Force it on.
HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);
httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
return next();
});
// SetSessionStateBehavior must be called before AcquireState
app.UseStageMarker(PipelineStage.MapHandler);
return app;
}
}

然后您可以使用HttpContext.Current.Session

访问 session
HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);

关于c# - OWIN 中间件可以使用 http session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565543/

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