使用Tempdata会使我的应用程序崩溃
本文关键字:应用程序 崩溃 我的 Tempdata 使用 | 更新日期: 2023-09-27 18:22:38
我是ASP.NET的新手,正试图在Visual Studio 2015中制作的web应用程序中的两个控制器之间传递对象。该web应用程序使用的是ASP.Net 5预览模板web应用程序(如果有帮助的话,我认为我使用的是测试版代码7,并且我不是为DNX Core 5构建的)。
我遇到的问题是,每当我试图将任何放入TempData变量时,程序似乎都会崩溃。例如,在我的"创建"方法中:
[HttpPost]
public ActionResult Create(Query query)
{
switch (query.QueryTypeID)
{
case 1:
TempData["Test"] = "Test";
return RedirectToAction("Index", "EventResults");
case 2:
break;
default:
break;
}
return View();
}
在该方法中,我尝试在键"test"下添加一个简单的测试字符串。当我运行带有TempData语句的应用程序时,我会收到一条错误消息,说明
处理请求时发生未处理的异常。
InvalidOperationException:尚未为此应用程序>或请求配置会话。Microsoft.AspNet.Http.Interal.DefaultHttpContext.get_Session()
我尝试过转到项目的wwwroot元素中的Web.config,并将"sessionState"对象添加到"system.Web"元素中,但这对错误没有影响。
任何帮助都将不胜感激,因为我一直在各地寻找解决方案。我希望这是我不知怎么错过的愚蠢/显而易见的事情。
为了使用中间件,如ASP.NET 5中的Session、Cache等,必须显式启用它们。
启用会话是通过在project.json
文件的依赖项部分添加适当的nuget包来完成的(确保包版本与您添加的其他依赖项的版本匹配):
"Microsoft.AspNet.Session": "1.0.0-*"
以及适当的会话(缓存)存储包(如下面的示例;在内存中):
"Microsoft.Extensions.Caching.Memory": "1.0.0-*"
以及在CCD_ 2服务配置中添加中间件以进行依赖解析:
public void ConfigureServices(IServiceCollection services)
{
services.AddCaching();
services.AddSession(/* options go here */);
}
以及在Startup.cs
OWIN配置中向OWIN添加中间件:
public void Configure(IApplicationBuilder app)
{
app.UseSession();
//...
确保UseSession
位于MVC配置之前。
对于Asp.Net Core,请确保添加了Asp.NetCore.Session
。您可以在StartUp.cs中配置会话,如下所示。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();
// Adds a default in-memory implementation of IDistributedCache.
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.CookieHttpOnly = true;
});
}
public void Configure(IApplicationBuilder app)
{
app.UseSession();
app.UseMvcWithDefaultRoute();
}