我有一个我正在玩的网站,以获取Razor Pages。我有一个奇怪的情况,我不确定发生了什么或如何解决。我正在使用[TempData]在重定向上传递消息。该应用程序在本地完美运行发布到Azure后,我添加了一个新项目并添加了项目,我被重定向到索引页面,但我从未看到TempData消息。
这是我的索引页面:
public class IndexModel : PageModel
{
private readonly TheFishRoom_MVC_Core.Data.FishRoomDbContext _context;
public IndexModel(TheFishRoom_MVC_Core.Data.FishRoomDbContext context)
{
_context = context;
}
public IList<Coral> Coral { get; set; }
[TempData]
public string Message { get; set; }
public bool ShowMessage => !string.IsNullOrEmpty(Message);
public async Task OnGetAsync(string searchString)
{
if (!String.IsNullOrEmpty(searchString))
{
Coral = await _context.Corals.Where(s => s.Name.Contains(searchString)).ToListAsync();
}
else
{
Coral = await _context.Corals.ToListAsync();
}
}
}
}
这是我的创建页面:
namespace TheFishRoom_MVC_Core.Pages.Corals
{
[Authorize(Roles = "Admin")]
public class CreateModel : PageModel
{
private readonly FishRoomDbContext _context;
public CreateModel(FishRoomDbContext context)
{
_context = context;
}
public IActionResult OnGet()
{
return Page();
}
[BindProperty]
public Coral Coral { get; set; }
[TempData]
public string Message { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Corals.Add(Coral);
await _context.SaveChangesAsync();
Message = "New Coral created successfully!";
return RedirectToPage("./Index");
}
}
}
本地网站可以正常工作......但不会发布到Azure。
感谢任何帮助!
答案 0 :(得分:2)
遇到同样的问题。
在azure上打开流日志,并发现以下消息:
Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware:Cookie“ .AspNetCore.Mvc.CookieTempDataProvider”由于同意政策而被禁止
结果是,当我在脚手架上放置网站时,我剥离了GDPR Cookie同意代码,该代码在.net Core MVC应用程序中立即可用,该代码将在接受后创建.AspNet.Consent cookie(值为“ yes”)
创建cookie后,TempData开始工作。
如果您不受GDPR的约束,还可以通过将CheckConsentNeeded设置为false来更新cookie策略选项以不检查是否同意。
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});