web-dev-qa-db-ja.com

このアプリケーションまたはリクエストエラーに対してセッションが設定されていません

私はasp.netに非常に新しいのですが、最近この例外に遭遇しました:

System.InvalidOperationException

例外の詳細は次のとおりです。

セッションは、このアプリケーションまたは要求に対して構成されていません。

発生するコードスニペットを次に示します。

[HttpPost]
        public object Post([FromBody]loginCredentials value)
        {
            if (value.username.Equals("Admin")
                &&
                value.password.Equals("admin"))
            {
                HttpContext.Session.Set("userLogin", System.Text.UTF8Encoding.UTF8.GetBytes(value.username)); //This the line that throws the exception.
                return new
                {
                    account = new
                    {
                        email = value.username
                    }
                };
            }
            throw new UnauthorizedAccessException("invalid credentials");
        }

なぜ起こっているのか、このエラーが実際に何を意味するのか、私にはわかりません。誰かがこれの原因を説明してください。

25
Keselme

Startup.csでは、呼び出す必要がある場合があります

app.UseMvcの前のapp.UseSession

app.UseSession();  
app.UseMvc();  

これが機能するためには、Microsoft.AspNetCore.Session nugetパッケージがインストールされていることも確認する必要があります。

56
Austin Born
    Following code worked out for me:

    Configure Services :

    public void ConfigureServices(IServiceCollection services)
            {
                //In-Memory
                services.AddDistributedMemoryCache();
                services.AddSession(options => {
                    options.IdleTimeout = TimeSpan.FromMinutes(1);
                });              
                // Add framework services.
                services.AddMvc();
           }

Configure the HTTP Request Pipeline:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
            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?}");
            });
        }
6
Uttam
HttpContext.Session.Add("name", "value");

OR

HttpContext.Session["username"]="Value";
1
Debashish Saha