【发布时间】:2017-07-21 23:55:20
【问题描述】:
我是 ASP.NET 的新手,我正在尝试在我在 Visual Studio 2015 中制作的 Web 应用程序中的两个控制器之间传递一个对象。该 Web 应用程序正在使用 ASP.Net 5 Preview Template Web 应用程序(如果有帮助,我想我正在使用 beta 代码 7,并且我不为 DNX Core 5 构建)。
我遇到的问题是,每当我尝试将 anything 放入 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.Internal.DefaultHttpContext.get_Session()
我已尝试转到位于项目的 wwwroot 元素中的 Web.config 并将“sessionState”对象添加到“system.web”元素中,但这对错误没有影响。
非常感谢任何帮助,因为我一直在到处寻找解决方案。我希望这是我以某种方式错过的愚蠢/明显的事情。
【问题讨论】:
-
你是否添加了
Microsoft.AspNet.Sessionnuget 包并在Startup类中添加了会话中间件? -
抱歉耽搁了,Pheilberg。我曾尝试单独添加该 Nuget 包,但它导致了一堆奇怪的错误(“iApplicationBuilder 是在未引用的包中定义的”或类似的东西),但我正在阅读您留下的答案,并将尝试所有这些.非常感谢您的建议,如果有用我会标记它!
-
如果您无法使用它,请查看Session Github Repo 中的session sample。如果您仍然无法使用它,请发布您的
project.json和Startup.cs代码。 -
您的回答完美!我认为我之前遇到的问题是双重的:首先,我没有安装与我的代码运行的相同版本的 nuget 包(我的代码是 beta7,我正在下载最新的。就像我说的,这对我来说是全新的...对于可能看到此内容的其他新手,请确保您要下载的包与您在 project.json 文件中的所有依赖项是相同的 beta 版本!)。其次,我不知道我需要缓存包。非常感谢您帮助我!非常感谢!
-
很好,你把它整理出来了。我忘了提包版本部分。
标签: c# asp.net visual-studio-2015