Asp.net mvc 发布到Azure时TempData不工作

Asp.net mvc 发布到Azure时TempData不工作,asp.net-mvc,razor-pages,tempdata,Asp.net Mvc,Razor Pages,Tempdata,我有一个网站,我正在玩得到剃须刀页面的窍门。我有一个奇怪的情况,我不知道发生了什么或如何解决。我正在使用[TempData]传递重定向消息。这个应用程序在本地运行得非常好。发布到Azure后,我添加了一个新项目并添加了该项目,我将重定向到索引页面,但我从未看到TempData消息 这是我的索引页: public class IndexModel : PageModel { private readonly TheFishRoom_MVC_Core.Data.FishRoomDbConte

我有一个网站,我正在玩得到剃须刀页面的窍门。我有一个奇怪的情况,我不知道发生了什么或如何解决。我正在使用[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();
        }
    }
}
} 
公共类索引模型:PageModel
{
私有只读FishRoom\u MVC\u Core.Data.FishRoomDbContext\u context;
公共索引模型(fishroom\u MVC\u Core.Data.FishRoomDbContext)
{
_上下文=上下文;
}
公共IList珊瑚{get;set;}
[临时数据]
公共字符串消息{get;set;}
public bool ShowMessage=>!string.IsNullOrEmpty(消息);
公共异步任务OnGetAsync(字符串搜索字符串)
{
如果(!String.IsNullOrEmpty(searchString))
{
Coral=await_context.Corals.Where(s=>s.Name.Contains(searchString)).toListSync();
}
其他的
{
Coral=wait_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");
    }
}
}
命名空间TheFishRoom\u MVC\u Core.Pages.Corals
{
[授权(Roles=“Admin”)]
公共类CreateModel:PageModel
{
私有只读FishRoomDbContext_context;
公共CreateModel(FishRoomDbContext上下文)
{
_上下文=上下文;
}
公共IActionResult OnGet()
{
返回页();
}
[BindProperty]
公共珊瑚{get;set;}
[临时数据]
公共字符串消息{get;set;}
公共异步任务OnPostAsync()
{
如果(!ModelState.IsValid)
{
返回页();
}
_context.Corals.Add(珊瑚);
wait_context.SaveChangesAsync();
Message=“新珊瑚成功创建!”;
返回页首(“/索引”);
}
}
}
在当地,该网站的工程。。。但不会发布到Azure

本地结果:


感谢您的帮助

遇到了同样的问题

打开azure上的流日志并发现以下消息:

Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware:Cookie'.AspNetCore.Mvc.CookieTempDataProvider'由于同意策略而被抑制

事实证明,当我搭建我的站点时,我去掉了.net核心MVC应用程序中现成的GDPR Cookie同意代码,该代码将在接受时创建.AspNet.Consent Cookie(值为“yes”)

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

如果您不受GDPR约束,还可以通过将CheckApproveRequired设置为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;
        });
services.Configure(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>false;
options.MinimumSameSitePolicy=SameSiteMode.None;
});

您是否在Azure中托管Web场(两个或多个实例)?如果你是这样,你需要使用Azure Redis缓存。我不是说这是一个单一的服务器实例…你有没有找到解决方案?我在发布到Azure时遇到了完全相同的问题(TempData显示重定向警报在本地可以正常工作,但在Azure上不行)。在这里使用.NET Core 2.1也会遇到同样的问题。不知道为什么。