在 .net 核心中访问控制器外部的 Httpcontext
Accessing Httpcontext outside controller in .net core
我无法访问控制器外部的会话变量,他们建议您添加 200 多个示例 ;
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpContextAccessor();
并使用
public class DummyReference
{
private IHttpContextAccessor _httpContextAccessor;
public DummyReference(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void DoSomething()
{
// access _httpcontextaccessor to reach sessions variables
}
}
但是,没有人提到如何从我的控制器中调用这个 class。我怎样才能达到 class?
如果将其更改为静态,则我需要绕过构造。如果我创建它,我需要 httpcontextaccessor 来构建。
对于想了解更多我为什么那样接近的人,我想写 class 包括加密、解密数据库表 RowID 等方法,用于在 VIEW 中使用 value+sessionvariable 进行屏蔽以确保其不被修改。
我还希望 DummyReference 是静态的,这样我就可以轻松达到 DummyReference.EncryptValue 或 DecryptValue。
该代码为您提供了当前的 HttpContext。会话略有不同:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2
同样的事情发生在我身上
我找到了将我的方法放入无控制器的解决方案 class(我想使用它的地方)
var HttpContext = _httpContextAccessor.HttpContext;
var vUser = _httpContextAccessor.HttpContext.Session.GetString("user");
不要在控制器外使用 IHttpContextAccessor。相反,使用 HttpContextAccessor.
在静态中像这样 类 ;
private static HttpContext _httpContext => new HttpContextAccessor().HttpContext;
或其他任何地方。当然,您仍然需要服务以及我们在控制器中所做的事情。
我无法访问控制器外部的会话变量,他们建议您添加 200 多个示例 ;
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpContextAccessor();
并使用
public class DummyReference
{
private IHttpContextAccessor _httpContextAccessor;
public DummyReference(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void DoSomething()
{
// access _httpcontextaccessor to reach sessions variables
}
}
但是,没有人提到如何从我的控制器中调用这个 class。我怎样才能达到 class?
如果将其更改为静态,则我需要绕过构造。如果我创建它,我需要 httpcontextaccessor 来构建。
对于想了解更多我为什么那样接近的人,我想写 class 包括加密、解密数据库表 RowID 等方法,用于在 VIEW 中使用 value+sessionvariable 进行屏蔽以确保其不被修改。
我还希望 DummyReference 是静态的,这样我就可以轻松达到 DummyReference.EncryptValue 或 DecryptValue。
该代码为您提供了当前的 HttpContext。会话略有不同:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2
同样的事情发生在我身上 我找到了将我的方法放入无控制器的解决方案 class(我想使用它的地方)
var HttpContext = _httpContextAccessor.HttpContext;
var vUser = _httpContextAccessor.HttpContext.Session.GetString("user");
不要在控制器外使用 IHttpContextAccessor。相反,使用 HttpContextAccessor.
在静态中像这样 类 ;
private static HttpContext _httpContext => new HttpContextAccessor().HttpContext;
或其他任何地方。当然,您仍然需要服务以及我们在控制器中所做的事情。