使用Tempdata会使我的应用程序崩溃

我是ASP.NET的新手,我试图在我在Visual Studio 2015中创建的Web应用程序中的两个控制器之间传递一个对象.Web应用程序正在使用ASP.Net 5预览模板Web应用程序(如果有帮助的话) ,我想我正在使用beta代码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语句的应用程序时,我收到一条错误消息

处理请求时发生未处理的exception。

InvalidOperationException:尚未为此应用程序>或请求配置会话。 Microsoft.AspNet.Http.Internal.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-*" 

并在Startup.cs服务配置中将中间件添加到依赖项解析:

 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(); // 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(); }