我有我的控制器SomeController
,其继承自ApiController
,我也有ActionFilter
:
一个FilterConfig
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
GlobalConfiguration.Configuration.Filters.Add(new LogExceptionFilterAttribute());
}
}
ErrorLogService
public static class ErrorLogService
{
public static void LogError(Exception ex, string metodo, string clase)
{
Utilidades.EnviarErrorHTTP(ex, null, metodo, clase);
}
}
LogExceptionFilterAttribute
public class LogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
//TODO
}
}
嗯,会话由ApiController
处理,在SomeController
我可以使用它:
var session = TokenUser;
但是,ErrorLogService
中没有任何内容可以调用该函数来识别令牌。
如果每个会话中的变量不同,有没有办法分享这个变量?
(TokenUser
是一个对象)。
答案 0 :(得分:0)
我找到了办法。
在 Global.asax 中,您必须添加下一个代码:
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}
现在,您可以使用Session
:
var session = System.Web.HttpContext.Current.Session;
session["token"] = sesion;
变量session
将在应用程序中保留。