gpt4 book ai didi

c# - 在 404/500/任何异常上显示 MVC5 中的自定义错误 CSHTML 页面?

转载 作者:太空狗 更新时间:2023-10-30 00:07:15 25 4
gpt4 key购买 nike

我一整天都在为这件事绞尽脑汁。我试图在抛出异常时只显示一个友好的 cshtml 页面,以便我的用户体验是一致的——我不希望我的用户甚至知道我在 UI 的 .net 堆栈上,永远。

我正在通过导航到 localhost:2922/junkurl 进行测试,- 如果 URL 无法解析、找不到或以其他方式生成异常,我想显示一个友好呈现的 cshtml 页面.

我的 web.config 中有什么:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/Shared/Error.cshtml">
</customErrors>

这会产生默认的黄色错误页面。但是,如果我在根目录中放置一个 error.html 页面并使用它:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/error.html">
</customErrors>

它有效。唯一的问题是,我不想用直接的 html 重新构建我的整个 Layout/LoginPartial/等 - 我想用 Razor 渲染它。围绕这个的典型方法是什么?我已经对此进行了大量搜索,所以如果我错过了答案,我深表歉意,我完全不知所措。

如果可能的话,我宁愿从代码中做到这一点,但据我所知,代码只会涵盖一定程度的异常……在某个时候,它似乎必须通过配置来处理。我只希望它是简单的配置!

最佳答案

尝试在您的 web.config 中使用 ErrorController 和以下配置

web.config

<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
<error redirect="~/Error/InternalServer" statusCode="500" />
</customErrors>

错误 Controller

public class ErrorController : Controller
{
public ActionResult Index()
{
return View("Error");
}

public ActionResult NotFound()
{
Response.StatusCode = 200;
return View("NotFound");
}

public ActionResult InternalServer()
{
Response.StatusCode = 200;
return View("InternalServer");
}
}

关于c# - 在 404/500/任何异常上显示 MVC5 中的自定义错误 CSHTML 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436740/

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