尚未为此应用程序配置会话或请求错误

时间:2018-05-31 08:10:10

标签: asp.net-mvc asp.net-web-api

我是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");
        }

我不知道它为什么会发生,或者这个错误究竟意味着什么。 有人可以解释可能导致这种情况的原因吗?

5 个答案:

答案 0 :(得分:46)

在您的Startup.cs中,您可能需要致电

app.UseSession在app.UseMvc之前

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

答案 1 :(得分:5)

    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?}");
            });
        }

答案 2 :(得分:2)

我在.NET Core 3.0 Razor Pages应用程序中遇到了完全相同的错误。由于我没有使用app.UseMvc(),因此建议的答案对我不起作用。

因此,对于任何登陆.NET Core 3.0中存在相同问题的人,这是我在Configure内所做的工作,以使其正常工作:

app.UseSession(); // use this before .UseEndpoints
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); });

答案 3 :(得分:1)

HttpContext.Session.Add("name", "value");

OR

HttpContext.Session["username"]="Value";

答案 4 :(得分:0)

如果遇到此问题,并且启动程序已正确设置:当我忘记等待并使用注入的IHttpContextAccessor异步方法时,此错误对我出现。通过将等待添加到呼叫中,此问题已解决。