mac*_*x0r 3 c# asp.net-core-mvc asp.net-core asp.net-core-1.1
我正在努力将我的ASP.NET 4.6框架代码迁移到.NET Core.我现在只处于学习阶段.我是MVC的新手,因为我一直使用WebForms,但我想离开WebForms.我也是ASP.NET Core的新手.
基本上,我有一个类库,可以完成我的大部分工作 - 使我免于在多个页面甚至网站上重复代码(数据库,会话,自定义身份管理).我将DLL添加到项目中,它已准备就绪.
我发现ASPNET Core并不完全允许这样做.也许我不理解它,或者也许现在开始移植它还为时过早.
我需要能够访问我的类库中的HttpContext来操作会话,cookie等等.最简单的方法是什么?我想一旦我能做到这一点,我就可以开始取得更好的进展.
或者,我是否需要重新考虑编写类库?根据我的理解,我需要编写中间件来实现这一目标.但我能找到的每一个例子都不完整或已经过时了.
欢迎任何建议.
mwi*_*ski 11
使用HttpContext全方位逻辑不是一个好主意,但如果你真的打算这样做,只需坚持一个SOLID原则,即.依赖倒置原则.
ASP.NET MVC及其后继者,ASP.NET Core在这个原则上奠定了基础.IHttpContextAccessor从需要它的类库中的任何类的构造函数中注入.
public class ContextHelper
{
private IHttpContextAccessor _httpContextAccessor;
public ContextHelper(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void DoStuff()
{
DoOtherStuffWith(_httpContextAccessor.HttpContext);
}
}
Run Code Online (Sandbox Code Playgroud)
请记住Startup在默认的IoC容器中注册它,如下所示:
public class Startup
{
// Rest of the class here...
public void ConfigureServices(IServiceCollection services)
{
// Other registrations here...
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7538 次 |
| 最近记录: |