2017-07-24 25 views
1

我正在使用TempData在查看页面中传递成功或失败消息。 当我第一次部署应用程序时,它工作正常,但是当服务器重新启动/重新引导时,我在TempData中遇到了会话问题,就像下面的截图一样。在asp.net核心中找不到TempData密钥

enter image description here

由于

+0

你在你的ConfigureServices中使用'services.AddDataProtection'吗?也许这是你的问题https://github.com/aspnet/DataProtection/issues/184 –

回答

0

TempData的下一个请求完成后废弃。这对于一次性消息很有用,比如表单验证错误。这里需要注意的重要一点是,这适用于会话中的下一个请求,以便请求可能发生在不同的浏览器窗口或选项卡中。

TempData通常用于paas控制器之间的值。

您应该使用ViewBagViewData将值从控制器传递到视图。

ViewBag.YourKey = "Value" 
上CSHTML

@if(ViewBag.YourKey!=null) 
{ 
} 

或ViewData的

ViewData["YourKey"] = "Value" 

上CSHTML

@if(ViewData["YourKey"] !=null) 
{ 
} 

谢谢

+0

其实,没有。 TempData通常用于传递一次性使用的消息信息,如“Operation Successful”或类似消息。它可以跨控制器,也可以从控制器中查看。无论如何,告诉他们使用不同的机制并不能解决问题。 –

+0

更新了答案 –

+0

仍然没有解决问题。用一个不存在的键调用TempData不应该抛出这个异常,它应该返回null。 –