c# - 使用 ASP.NET Core 1.1 (MVC) 访问类库中的 httpcontext

标签 c# asp.net-core asp.net-core-mvc asp.net-core-1.1

我正在努力将我的 ASP.NET 4.6 框架代码迁移到 .NET Core。我现在只处于学习阶段。我是 MVC 的新手,因为我一直使用 WebForms,但我想远离 WebForms。我也是 ASP.NET Core 的新手。

基本上,我有一个类库来完成我的大部分工作 - 使我免于跨多个页面甚至网站重复代码(数据库、 session 、自定义身份管理)。我将 DLL 添加到项目中,它已准备就绪。

我发现 ASPNET Core 不太允许这样做。也许我不理解它,或者现在开始移植到它还为时过早。

我需要能够访问我的类库中的 HttpContext 以操作诸如 session 、cookie 等内容。最简单的方法是什么?我认为一旦我能做到这一点,我就能开始取得更好的进步。

或者,我是否需要重新考虑编写一个类库?据我了解,我需要编写中间件来完成此操作。但我能找到的每个示例要么不完整,要么已经过时。

欢迎提出任何建议。

最佳答案

HttpContext 用于全方位逻辑并不是一个好主意,但如果您真的打算这样做,只需坚持 SOLID 原则之一,即。 依赖倒置原则

ASP.NET MVC 及其后继者 ASP.NET Core 的基础正是基于这一原则。 在类库中需要它的任何类的构造函数中注入(inject) IHttpContextAccessor


示例:

public class ContextHelper
{
    private IHttpContextAccessor _httpContextAccessor;

    public ContextHelper(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public void DoStuff()
    {
        DoOtherStuffWith(_httpContextAccessor.HttpContext);
    }
}

记得像这样在默认的 IoC 容器中的 Startup 中注册它:

public class Startup
{
    // Rest of the class here...

    public void ConfigureServices(IServiceCollection services)
    {
        // Other registrations here...

        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    }
}

关于c# - 使用 ASP.NET Core 1.1 (MVC) 访问类库中的 httpcontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528215/

相关文章:

c# - Visual Studio 2013 Ultimate 与 Microsoft.VisualBasic.PowerPack

javascript - 同域 AJAX 调用被第 3 方身份验证重定向

c# - ASP.NET Core 3 MVC 路由参数不起作用

Razor 找不到类型或命名空间

c# - 带有 ASP.NET Web 表单的 Azure CosmosDB SDK v3

c# - 在 YouTube API 中查找非英语 channel

c# - 更改自定义 WPF ComboBox 的背景

c# - ASP.Core 中的 .NET 版本

c# - 在 ASP.NET Core 中注入(inject) IUrlHelper

asp.net-core - .NET Core 是否支持 SqlDependency?