Asp.net mvc 尚未为此应用程序或请求错误配置会话
我是asp.net的新手,最近我遇到了一个例外: System.InvalidOperationException异常 例外情况的详细说明如下: 尚未为此应用程序或请求配置会话 下面是发生这种情况的代码片段:Asp.net mvc 尚未为此应用程序或请求错误配置会话,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我是asp.net的新手,最近我遇到了一个例外: System.InvalidOperationException异常 例外情况的详细说明如下: 尚未为此应用程序或请求配置会话 下面是发生这种情况的代码片段: [HttpPost] public object Post([FromBody]loginCredentials value) { if (value.username.Equals("Admin")
[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");
}
我不知道为什么会这样,也不知道这个错误到底意味着什么。
有人能解释一下是什么引起的吗
HttpContext.Session.Add("name", "value");
或
在Startup.cs中,您可能需要调用 app.UseMvc之前的app.UseSession
app.UseSession();
app.UseMvc()代码>以下代码适合我:
配置服务:
public void ConfigureServices(IServiceCollection services)
{
//In-Memory
services.AddDistributedMemoryCache();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(1);
});
// Add framework services.
services.AddMvc();
}
配置HTTP请求管道:
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?}");
});
}
我在.NETCore3.0RazorPages应用程序中遇到了完全相同的错误。因为,我没有使用app.UseMvc()
因此,对于在.NET Core 3.0中遇到相同问题的任何人来说,下面是我在配置中所做的工作,以使其正常工作:
app.UseSession(); // use this before .UseEndpoints
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); });
如果您遇到了这个问题,并且您的启动设置正确:当我忘记等待并使用注入的IHttpContextAccessor的异步方法时,会出现这个错误。通过在通话中添加wait,问题得以解决 检查ASP NET Core 3.1的问题。请看是,这是一个类似问题的公认答案。services.AddSession();除此之外还有一点,特别是您需要先将Microsoft.AspNetCore.Session NuGet包添加到您的应用程序中,然后在适当的位置(如上图所示的app.UseMvc()上方)调用app.UseSession()这是一篇非常好的文章,详细介绍了这个过程以及使用情况。在.NET Core 3.0中,这不再适用,在那里你不应该再使用app.UseMvc()。我现在收到一个错误,说没有为此应用程序或请求配置会话。不确定现在把它放在哪里?Microsoft.AspNetCore.Session这是关键,它在3.1上工作。UseMvc()在.net core应用程序中为我工作。AddDistributedMemoryCahce
非常重要。而且AddSession
和UseSession
的顺序也很重要。无需使用AddSession
中的选项即可将此应用于工作。谢谢!将会话放在端点之前也解决了这一问题。将.UseSession()放在.UseEndpoints()之前也对我有效。非常感谢。这根本不能回答OP的问题。此外,Add和方括号[]方法在.NETCore中不再存在。
app.UseSession(); // use this before .UseEndpoints
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); });