Я попытался установить сеанс в своем основном проекте asp.net согласно этому и этому учебному пособию (ям).
Часть настройкиСессия должна была добавить в автозагрузку:
services.AddDistributedMemoryCache()
services.AddSession()
и в автозагрузке настроить:
app.UseAuthentication();
app.UseConfigureSession(); // this..
app.UseStaticFiles();
app.UseSession(); // this..
app.UseMvc(routes =>
Все хорошо, теперь я хотел использовать его в функции промежуточного программного обеспечения ..
public async Task InvokeAsync(HttpContext httpContext, IUserSession userSession, ISessionServices sessionServices)
{
if (httpContext.User.Identities.Any(id => id.IsAuthenticated))
{
if(httpContext.Session.GetString("connectionString") == null) // Session needs to be set..
{
userSession.userId = httpContext.User.Claims.FirstOrDefault(x => x.Type == "userId")?.Value;
userSession.connectionString = sessionServices.ConnectionStringfromUserId(userSession.userId);
httpContext.Session.SetString("userId", userSession.userId);
httpContext.Session.SetString("connectionString", userSession.connectionString);
}
else // Session set so all we need to is to build userSession for data access..
{
userSession.userId = httpContext.Session.GetString("userId");
userSession.connectionString = httpContext.Session.GetString("connectionString");
}
}
// Call the next delegate/middleware in the pipeline
await _next.Invoke(httpContext);
}
Но еще до того, как я приступил к настройке Session, я обнаружил, что получаю исключение System.InvalidOperationException - см. Рис. Ниже, где я использовал точку останова для проверки httpContext ..
Затем он продолжает исчезать в эфире после продолжения ..
Не уверен, как это исправить .. не уверен, что не так с настройкой, чтобы вызвать это .. надеясь, что кто-то может пролить свет.