asp.net - 如何在 ASP.NET MVC 中访问 Controller 之外的 HttpContext?

标签 asp.net asp.net-mvc

具体来说, session ​​变量。我的 ASP.NET MVC 项目中有一个 .ashx,它正在提取一些图像数据以显示给用户,并且我需要能够访问存储在 session 中的对象。从 Controller 中,我可以很好地提取对象,但在我的 ashx 页面中,context.Session 为空。有什么想法吗?谢谢!

这是我正在尝试做的一个例子...... context.Session 总是返回null。

  private byte[] getIconData(string icon)
    {
        //returns the icon file
        HttpContext context = HttpContext.Current;

        byte[] buffer = null;

        //get icon data
        if ( context.Session["tokens"] != null)
        {
            //do some stuff to get icon data
        }
    }

最佳答案

为了节省任何人的挖掘,对于.net core 2.1+:

将以下内容添加到您的 Startup.cs 中的 public void ConfigureServices(...) 中:

services.AddHttpContextAccessor();

通过注入(inject)您的服务/等来使用:
public MyService(IHttpContextAccessor httpContextAccessor) { //... }

感谢:https://adamstorr.azurewebsites.net/blog/are-you-registering-ihttpcontextaccessor-correctly

关于asp.net - 如何在 ASP.NET MVC 中访问 Controller 之外的 HttpContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918283/

相关文章:

asp.net-mvc - Angularjs 轻型版本

c# - 在 EF 中集成和扩展 .NET 标识类(代码优先)

javascript - 使用 https 会阻止客户端访问 JavaScript 中的任何 secret 数据

c# - getResponse 后页面加载但不重定向

c# - 关闭发布版本的 MVC 编译调试

c# - 如何在 asp.net 中创建 DTO?

asp.net - 我可以仅在 web.debug.config 中指定连接字符串吗?

c# - Razor 和 ASPX 有什么区别?

c# - MVC 框架如何使用 DataAnnotations 验证代码优先 POCO?

c# - 如何使用C#在IIS Express中创建虚拟目录