Я использую AspNet Core 2 для создания приложения, у меня проблемы с сессиями, не могли бы вы помочь?
Точная ошибка:
Служба для типа «Microsoft.AspNetCore.Http.HttpContext» не зарегистрирована.
Я использую этот в качестве руководства, но, кажется, недостаточно.
в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedMemoryCache();
services.AddMvc().AddSessionStateTempDataProvider();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromMinutes(1);
options.Cookie.HttpOnly = true;
});//<<==
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseSession();//<<==
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}
в домашнем контроллере:
using Microsoft.AspNetCore.Http;
HttpContext.Session.SetString("TestName", user.UserName);
HttpContext.Session.SetString("TestVal", user.testVal.ToString());
на данный момент он работает , я могу перемещаться по разным страницам, и я могу использовать / проверять сеансы на стороне контроллера.
Но проблема в том, что я пытаюсь использовать сеансы в любом представлении
Вид сбоку:
@using Microsoft.AspNetCore.Http
@inject HttpContext HttpContext
@if (@HttpContext.Session.GetString("testVal").Equals("True"))
{
<td><input type="checkbox"></td>
}
else
{
<td><input type="checkbox" readonly></td>
}
когда я пытаюсь получить или установить сессию cshtml / view, я получаю сообщение об ошибке
Не могли бы вы помочь?