我有一个网站正在玩,以获取Razor Pages的困扰.我有一个奇怪的情况,我不确定正在发生什么或如何解决.我正在使用[TempData]在重定向时传递消息.该应用程序可在本地完美运行.一旦发布到Azure,我将添加一个新项目并添加该项目,我被重定向到索引页面,但我从未看到TempData消息.
I have a site I'm playing with to get the hang of Razor Pages. I have a weird situation I'm unsure what is happening or how to resolve. I'm using [TempData] to pass a message on redirect. The app works perfectly locally. Once published to Azure I add a new item and the item is added, I'm redirected to the index page but I never see the TempData message.
这是我的索引页面:
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.
Locally the site works... but not with published to Azure.
本地结果:
感谢您的帮助!
推荐答案遇到同样的问题.
在azure上打开流式日志,并发现以下消息:
Turned on streaming logs on azure and found the following message:
Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware:Cookie".AspNetCore.Mvc.CookieTempDataProvider"由于同意政策而被禁止
Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware: Cookie '.AspNetCore.Mvc.CookieTempDataProvider' suppressed due to consent policy
结果是,当我在脚手架上放置网站时,我剥离了GDPR Cookie同意代码,该代码在 Core MVC应用程序中立即可用,该代码将在接受后创建.AspNet.Consent cookie(值为"yes")
Turns out when I was scaffolding my site I stripped the GDPR Cookie Consent code that comes out of the box in Core MVC apps that will create the .AspNet.Consent cookie (with a value of "yes") when accepted.
创建cookie后,TempData开始工作.
Once that cookie was created, TempData started working.
如果您不受GDPR的约束,还可以通过将CheckConsentNeeded设置为false来更新cookie策略选项,以不检查是否同意.
You can also update the cookie policy options to not check for consent by setting CheckConsentNeeded to false if you are not subject to GDPR.
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; });更多推荐
发布到Azure时TempData无法正常工作
发布评论