我是 ASP.NET 的新手,我正在尝试在我在 Visual Studio 2015 中创建的 Web 应用程序中的两个 Controller 之间传递一个对象。该 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 语句运行应用程序时,我收到一条错误消息,指出
An unhandled exception occurred while processing the request.
InvalidOperationException: Session has not been configured for this application >or request. Microsoft.AspNet.Http.Internal.DefaultHttpContext.get_Session()
我尝试转到位于项目的 wwwroot 元素中的 Web.config 并将“sessionState”对象添加到“system.web”元素中,但这对错误没有影响。
任何帮助将不胜感激,因为我一直在到处寻找解决方案。我希望这是我不知何故错过的愚蠢/明显的事情。
最佳答案
要在 ASP.NET 5 中使用中间件,例如 Session、Cache 等,您必须显式启用它们。
通过在 project.json
文件的依赖项部分添加适当的 nuget 包来启用 session (确保包版本与您添加的其他依赖项的版本相匹配):
"Microsoft.AspNet.Session": "1.0.0-*"
以及相应的 session (缓存)存储包(如下面的示例;在内存中):
"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 配置。
关于c# - 使用 Tempdata 使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814042/