ASP.NET Core Razor 页面中的单独状态代码页

问题描述 投票:0回答:1

我正在使用 ASP.NET Core Razor Pages 和 Identity。我以标准方式使用 StatusCodePages 中间件

app.UseStatusCodePagesWithReExecute("/Error", "?statusCode={0}");

在该剃刀页面中,我可以打开状态代码以呈现 401、403、404 和“其他”(400..599 范围内的所有其他代码)的不同内容。然而这会变得混乱;我更喜欢单独的页面。

所以代替这个:

  • /Pages/Error.cshtml

我想要这个:

  • /Pages/401.cshtml
  • /Pages/403.cshtml
  • /Pages/404.cshtml
  • /Pages/400_599.cshtml

这可能吗?

我已经知道的丑陋的解决方法:

  • 我可以使用 URL 模板
    "/Error/{0}"
    ,但这不切实际:我必须为 400..599 范围内的每个代码定义一个单独的页面。我绝对做不到。
  • 在“/Pages/Error.cshtml.cs”页面模型类中,我可以根据状态代码重定向到不同的页面。我不想这样做,我怀疑这对 SEO 不利。
  • 对于“/Error”端点,我可以使用带有视图的 MVC 控制器(而不是 Razor Pages);操作方法可以返回适当的视图。不错的解决方案,但增加了不必要的复杂性;我更喜欢 Razor Pages 方法。
asp.net-core razor-pages asp.net-core-identity asp.net-core-7.0
1个回答
0
投票

当然可以,只需在

Pages
文件夹中创建页面,如下所示:

然后在Program.cs中使用

app.UseStatusCodePagesWithReExecute("/{0}")

app.UseStatusCodePagesWithReExecute("/{0}");
app.UseExceptionHandler("/500");

//app.UseDeveloperExceptionPage();

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();
© www.soinside.com 2019 - 2024. All rights reserved.