l,以往我们引用DLL都是直接引用,在Core里这样是不行的,必须基于NuGet添加,或者基于project.json添加,然后保存VS会启动还原类库。
第二就是使用Session的问题,Core里使用Session需要添加Session类库。
添加Session
在你的项目上基于NuGet添加:Microsoft.AspNetCore.Session。
修改startup.cs
在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(这个地方是Asp.net Core pipeline):services.AddSession();
接下来我们要告诉Asp.net Core使用内存存储Session数据,在Configure(IApplicationBuilder app,...)中添加代码:app.UserSession();
Session
1、在MVC Controller里使用HttpContext.Session
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using
Microsoft.AspNetCore.Http;
public
class
HomeController:Controller
{
public
IActionResult Index()
{
HttpContext.Session.SetString(
"code"
,
"123456"
);
return
View();
}
public
IActionResult About()
{
ViewBag.Code=HttpContext.Session.GetString(
"code"
);
return
View();
}
}
|
2、如果不是在Controller里,你可以注入IHttpContextAccessor,有两种方式,一种是在类的构造函数里面注入,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
SomeOtherClass
{
private
readonly
IHttpContextAccessor _httpContextAccessor;
private
ISession _session=> _httpContextAccessor.HttpContext.Session;
public
SomeOtherClass(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor=httpContextAccessor;
}
public
void
Set()
{
_session.SetString(
"code"
,
"123456"
);
}
public
void
Get()
{
string
code = _session.GetString(
"code"
);
}
}
|
