问题描述
我正在创建一个在 angular 和 web api 上运行的应用程序。实际上要求是使用web api而不是rest api。我们需要在 web api 中管理会话。
public class SessionHttpControllerRouteHandler : HttpControllerRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new SessionControllerHandler(requestContext.RouteData);
}
}
public class SessionControllerHandler : HttpControllerHandler,IRequiresSessionState
{
public SessionControllerHandler(RouteData routeData)
: base(routeData)
{
}
}
routes.MapHttpRoute(
name: "DefaultApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionHttpControllerRouteHandler();
例如,有两个 API 调用。 1 个是登录,另一个是搜索调用。
在第一次调用中,我将 UserID 添加到 session { HttpContext.Current.Session.Add(key,value);在搜索调用中,我试图检索登录 API 调用时保存在会话中的值 { HttpContext 上下文 = HttpContext.Current; 返回 context.Session[key]; }
我尝试从 Postman 调用 API,一切正常,它正在维护会话。但是当我尝试通过 Web 浏览器从 angular 调用 API 时,会话根本没有检索。 设置值后,在尝试检索相同的值时,http.context.current.session 始终为空。
然后我查了postman,知道有一个cookie,postman自动创建和维护的,就是ASP/Net_SessionId。如果我删除了 cookie,则会话值不会保持不变。
那么,请您帮助我如何在使用 angular 作为前端时维护 web api 中的会话值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)