很无聊的记录下。首先IIS 7以上的版本测试才成功html
首先web
//全局ErrorHandler public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new VcodeFilterAttribute()); }
而后MVC web.config 设置以下测试
<!-- 放到system.webServer --> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404"/> <remove statusCode="500"/> <error statusCode="404" path="/Error/Error404" responseMode="ExecuteURL"/> <error statusCode="500" path="/Error/Error500" responseMode="ExecuteURL"/> </httpErrors>
确保它是关闭的。spa
<customErrors mode="Off" />
而后有个ErrorController。日志
public class ErrorController : Controller { public ActionResult Error404() { return View(); } public ActionResult Error500() { return View(); } }
View 中,喜欢怎么写就怎么写。固然要设置一下StatusCode,不然所有返回200code
@{ Response.StatusCode = 404;}
固然也能够在controller里面设置htm
日志能够写在global里面blog
protected void Application_Error(object sender, EventArgs e) { var exception = Server.GetLastError(); //log exception }