我对 ASP.NET 非常陌生,正在尝试在我在 Visual Studio 2015 中制作的 Web 应用程序中的两个控制器之间传递对象。该 Web 应用程序正在使用 ASP.Net 5 预览模板 Web 应用程序(如果有帮助) ,我想我正在使用 beta 代码 7 并且我not为 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”元素中,但这对错误没有影响。
任何帮助将非常感激,因为我一直在到处寻找解决方案。我希望这是一些愚蠢的/令人眼花缭乱的明显的事情,我不知何故错过了。
为了在 ASP.NET 5 中使用中间件,例如 Session、Cache 等,您必须显式启用它们。
启用会话是通过在您的应用程序中添加适当的 nuget 包来完成的project.json
文件的依赖项部分(确保包版本与您添加的其他依赖项的版本匹配):
"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 */);
}
并将中间件添加到 OWIN 中Startup.cs
欧文配置:
public void Configure(IApplicationBuilder app)
{
app.UseSession();
//...
确保UseSession
comes beforeMVC 配置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)