gpt4 book ai didi

asp.net-mvc - 发布到 Azure 时 TempData 不起作用

转载 作者:行者123 更新时间:2023-12-01 22:55:54 27 4
gpt4 key购买 nike

我正在使用一个网站来掌握 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。

本地结果: enter image description here

感谢任何帮助!

最佳答案

遇到了同样的问题。

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

Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware: Cookie '.AspNetCore.Mvc.CookieTempDataProvider' suppressed due to consent policy

事实证明,当我搭建网站时,我剥离了 .net Core MVC 应用程序中开箱即用的 GDPR Cookie 同意代码,该代码在接受时将创建 .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;
});

关于asp.net-mvc - 发布到 Azure 时 TempData 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50865173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com