Max*_*eel 3 c# asp.net asp.net-mvc custom-error-pages asp.net-mvc-3
我想在我的ASP.NET MVC 2应用程序中显示自定义403页面.我按照以下链接.我在配置文件中添加了以下内容:
<httpErrors>
<remove statusCode="403" subStatusCode="-1"/>
<error statusCode="403" path="/403.htm" responseMode="ExecuteURL"/>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
我仍然看到默认的ASP.NET 403错误页面.怎么了?

在web.config中添加以下标记:
<customErrors mode="On" defaultRedirect="/error/error">
<error statusCode="400" redirect="/error/badrequest" />
<error statusCode="403" redirect="/error/forbidden" />
<error statusCode="404" redirect="/error/notfound" />
<error statusCode="414" redirect="/error/urltoolong" />
<error statusCode="503" redirect="/error/serviceunavailable" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
使用以下代码添加名为ErrorInfo的视图模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Gunaatita.ViewModel
{
public class ErrorInfo
{
public string Message { get; set; }
public string Description { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码创建一个控制器名称ErrorController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Gunaatita.ViewModel;
namespace Gunaatita.Controllers
{
[HandleError]
public class ErrorController : Controller
{
public ActionResult Error()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "An Error Has Occured";
errorInfo.Description = "An unexpected error occured on our website. The website administrator has been notified.";
return PartialView(errorInfo);
}
public ActionResult BadRequest()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "Bad Request";
errorInfo.Description = "The request cannot be fulfilled due to bad syntax.";
return PartialView("Error", errorInfo);
}
public ActionResult NotFound()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "We are sorry, the page you requested cannot be found.";
errorInfo.Description = "The URL may be misspelled or the page you're looking for is no longer available.";
return PartialView("Error", errorInfo);
}
public ActionResult Forbidden()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "403 Forbidden";
errorInfo.Description = "Forbidden: You don't have permission to access [directory] on this server.";
return PartialView("Error", errorInfo);
}
public ActionResult URLTooLong()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "URL Too Long";
errorInfo.Description = "The requested URL is too large to process. That’s all we know.";
return PartialView("Error", errorInfo);
}
public ActionResult ServiceUnavailable()
{
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.Message = "Service Unavailable";
errorInfo.Description = "Our apologies for the temporary inconvenience. This is due to overloading or maintenance of the server.";
return PartialView("Error", errorInfo);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用以下标记更新\ Views\Shared\Error.cshtml:
@model Gunaatita.ViewModel.ErrorInfo
@{
ViewBag.Title = "Problem";
Layout = "~/Views/Shared/_LayoutSite.cshtml";
}
<div class="middle-container">
<link rel="stylesheet" href="/Content/css/thankyou.css">
<!--- middle Container ---->
<div class="middle-container">
<div class="paddings thankyou-section" data-moduleid="2050" id="ContactUsPane">
@if (Model != null)
{
<h1>@Model.Message</h1>
<p>@Model.Description</p>
}
else
{
<h1>An Error Has Occured</h1>
<p>An unexpected error occured on our website. The website administrator has been notified.</p>
}
<p><a href="/" class="btn-read-more">Go To Home Page</a></p>
</div>
</div>
<!--- middle Container ---->
</div>
Run Code Online (Sandbox Code Playgroud)