我是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");
}
我不知道它为什么会发生,或者这个错误究竟意味着什么。 有人可以解释可能导致这种情况的原因吗?
答案 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异步方法时,此错误对我出现。通过将等待添加到呼叫中,此问题已解决。