Ядро asp.net - Получение исключения system.InvalidOperationException для Httpcontext.Session - PullRequest
2 голосов
/ 24 мая 2019

Я попытался установить сеанс в своем основном проекте 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 ..

enter image description here

Затем он продолжает исчезать в эфире после продолжения ..

Не уверен, как это исправить .. не уверен, что не так с настройкой, чтобы вызвать это .. надеясь, что кто-то может пролить свет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...