Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在404/500上的MVC5中显示自定义错误CSHTML页面/有任何异常吗?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

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

C# 在404/500上的MVC5中显示自定义错误CSHTML页面/有任何异常吗?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我一整天都在为这件事发愁。我正试图在抛出异常时显示一个友好的cshtml页面,以便我的UX是一致的——我甚至不希望我的用户知道我在UI的.net堆栈上 我正在导航到localhost:2922/junkurl,进行测试-如果URL未解析、找不到或生成异常,我希望显示友好的呈现cshtml页面 我在web.config中拥有的内容: <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/

我一整天都在为这件事发愁。我正试图在抛出异常时显示一个友好的cshtml页面,以便我的UX是一致的——我甚至不希望我的用户知道我在UI的.net堆栈上

我正在导航到
localhost:2922/junkurl
,进行测试-如果URL未解析、找不到或生成异常,我希望显示友好的呈现cshtml页面

我在web.config中拥有的内容:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/Shared/Error.cshtml">
</customErrors>
它起作用了。唯一的问题是,我不想用纯html重新构建我的整个布局/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>

有没有办法使用MVC视图/呈现并从URL中删除aspxerrorpath?否则,这是很好的:)我问的原因是,理想情况下,我的用户甚至不知道我在.NET上。。。尝试尽可能多地隐藏实现/体系结构Readd redirectMode=“ResponseWrite”到customErrors部分如果我这样做,我会再次看到通用的黄色错误页面,因为ResponseWrite显然不喜欢MVC路由是的,我的错。看看这个。这里有关于你的问题的讨论
<customErrors mode="On" defaultRedirect="~/Error">
  <error redirect="~/Error/NotFound" statusCode="404" />
  <error redirect="~/Error/InternalServer" statusCode="500" />
</customErrors>
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");
    }
}