C# 显示原始HTML的MVC自定义错误页面

C# 显示原始HTML的MVC自定义错误页面,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,所以我试图实现一个定制的404页面。我使用了来自的建议来使用它,404现在成功地加载了所需的视图,但不知何故,整个页面被包装在一个pre标记中,因此无法呈现。当我手动请求站点时,它呈现的很好,因此在重新处理时可能会出现问题。输出如下所示: 输出: 错误控制器: 更新 多亏了M.Babcock,它只需添加Response.ContentType=“text/html”;我的控制器方法。下载错误页面时,您确认浏览器收到的mime类型了吗?打开浏览器中的开发工具,查看响应标题。我相信你要找的应该是内容

所以我试图实现一个定制的404页面。我使用了来自的建议来使用它,404现在成功地加载了所需的视图,但不知何故,整个页面被包装在一个pre标记中,因此无法呈现。当我手动请求站点时,它呈现的很好,因此在重新处理时可能会出现问题。输出如下所示:

输出:

错误控制器:

更新
多亏了M.Babcock,它只需添加Response.ContentType=“text/html”;我的控制器方法。

下载错误页面时,您确认浏览器收到的mime类型了吗?打开浏览器中的开发工具,查看响应标题。我相信你要找的应该是内容类型。很好,这对我很有用。已更改控制器方法中的内容类型。谢谢
<html>
     <head>
         <html><head><link rel="alternate stylesheet" type="text/css" href="resource://gre-resources/plaintext.css" title="Lange Zeilen umbrechen"
     </head>
     <body>
         <pre><!DOCTYPE html><html>... (my page html)</html></pre>
     </body>
</html>
Exception ex = Server.GetLastError();
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Error");

Response.Clear();
...
} else if(ex is HttpException) {
    if (((HttpException)ex).GetHttpCode() == 404)
    {
        routeData.Values.Add("action", "HttpError404");
    }

    // Pass exception details to the target error View.
    routeData.Values.Add("error", ex);

    // Clear the error on server.
    Server.ClearError();

    // Avoid IIS7 getting in the middle
    Response.TrySkipIisCustomErrors = true;

    // Call target Controller and pass the routeData.
    IController errorController = new ErrorController();
    errorController.Execute(new RequestContext(
         new HttpContextWrapper(Context), routeData));
    }
[HandleError]
public ActionResult HttpError404(string error)
{
    ViewBag.Title = "Page not found! 404";
    ViewBag.Description = error;
    Response.StatusCode = 404;
    Response.TrySkipIisCustomErrors = true;

    return View("Index");
}