发布到Azure时TempData无法正常工作

Tim*_*Tim 4 asp.net-mvc tempdata razor-pages

我有一个网站正在玩,以获取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();
        }
    }
}
} 
Run Code Online (Sandbox Code Playgroud)

这是我的创建页面:

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");
    }
}
}
Run Code Online (Sandbox Code Playgroud)

该站点在本地可用...但是不适用于发布到Azure。

本地结果: 在此处输入图片说明

任何帮助表示赞赏!

smu*_*agh 5

遇到同样的问题。

在天蓝色上打开流日志,并发现以下消息:

Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware:由于同意政策,Cookie'.AspNetCore.Mvc.CookieTempDataProvider'被禁止

原来,当我在脚手架上放置网站时,我剥夺了.net Core MVC应用程序中开箱即用的GDPR Cookie同意代码,该代码将在接受后创建.AspNet.Consent cookie(值为“ yes”)。

一旦创建了该cookie,TempData就开始工作。

您也可以通过将CheckConsentNeeded设置为false(如果您不受GDPR约束)来更新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;
        });
Run Code Online (Sandbox Code Playgroud)