c# - 在 localhost 上使用 asp.net core 2.1 身份时,TempData 丢失
问题描述
安装新asp.net core 2.1 identity
的(使用 RCL 的)来玩它。脚手架式登录、注册和个人资料页面。检查个人资料页面:
Areas.Identity.Pages.Account.Manage.Index.cshtml.cs
我遇到了这个属性:
[TempData]
public string StatusMessage { get; set; }
这是在更新个人资料页面时设置的:
StatusMessage = "Your profile has been updated";
return RedirectToPage();
有趣的是在本地运行时没有显示消息。更有趣的是,当我将它发布到 Azure 时,它可以工作。
我Startup.cs
确实有官方文档所示的配置:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata
内容如下:
.AddSessionStateTempDataProvider()
和
app.UseSession();
这是完整的源代码:
https://github.com/kedzior-io/dotnetpwa/tree/model-status-message-is-empty-on-redirect
知道我错过了什么吗?
解决方案
所以看起来官方文档不好:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.1#tempdata
文件:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
services.AddSession();
}
应该:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddSession(); // That should be BEFORE .AddMvc()
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddSessionStateTempDataProvider();
}
谢谢@托尼莫里斯
推荐阅读
- scala - 不能用作模式中的提取器,因为它缺少 unapply 或 unapplySeq 方法
- css - 阻止内容溢出固定的 div?
- linux - 在for循环中使用grep从文件中提取行,导出到文件名中带有变量的新文件
- javascript - 我如何了解用户已在其 Android 设备上禁用地理定位?JS
- core-plot - SwiftUI IOS 动态 CorePlot 数据
- microsoft-graph-api - 如何使用图形 api 为 2 个不同的收件人发送具有不同内容的电子邮件
- wordpress - 使用 Wordpress 的 Twitter 大图像
- reactjs - getDerivedStateFromProps 之前的静态关键字
- api - Github Gists Api Angular
- flutter - 必须初始化不可为空的实例字段“_localizedStrings”