asp.net mvc输出自定义404等错误页面,非302跳转。
2014-07-20 13:22
573 查看
朋友问到一个问题,如何输出自定义错误页面,不使用302跳转。当前页面地址不能改变.
还要执行一些代码等,生成一些错误信息,方便用户提交反馈.
500错误,mvc框架已经有现成解决方法:
404错误目前想到的解决方法:
先上代码 Global.asax:
View Code
web.config
目前有几个疑惑,没有深究:还望有网友知道能解惑一二,就不用去google 扒源码了。
1.如果不加这行代码,默认输出的是:text/html; 浏览器直接输出内容,不做解析.
2.iis不会使用gzip压缩,不管输出的404错误页面有多大,都不会自动压缩.所以使用下面这种替换方式.
猜测:
mvc 在action的Execute阶段后 还做了不少事情,比如上面提到的1,2点.正常200请求会执行默认的filter等阶段.
而当是404请求时,跳过了这些阶段.可能500请求也类似.
仅仅是猜测,还未验证,
还要执行一些代码等,生成一些错误信息,方便用户提交反馈.
500错误,mvc框架已经有现成解决方法:
filters.Add(new HandleErrorAttribute());
404错误目前想到的解决方法:
先上代码 Global.asax:
public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"]; if (!string.IsNullOrEmpty(acceptEncoding)) { acceptEncoding = acceptEncoding.ToLower(); var response = filterContext.HttpContext.Response; if (acceptEncoding.Contains("gzip")) { response.AppendHeader("Content-encoding", "gzip"); response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); } else if (acceptEncoding.Contains("deflate")) { response.AppendHeader("Content-encoding", "deflate"); response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); } } } } [Compress] public class SysController : Controller { // // GET: /sys/ public ActionResult NotFound() { return View(); } public ActionResult Error() { return View(); } }
View Code
web.config
<system.webServer> <httpErrors errorMode="Detailed" />
目前有几个疑惑,没有深究:还望有网友知道能解惑一二,就不用去google 扒源码了。
1.如果不加这行代码,默认输出的是:text/html; 浏览器直接输出内容,不做解析.
httpContext.Response.ContentType = "text/html; charset=utf-8";
2.iis不会使用gzip压缩,不管输出的404错误页面有多大,都不会自动压缩.所以使用下面这种替换方式.
[Compress] public class SysController : Controller
猜测:
mvc 在action的Execute阶段后 还做了不少事情,比如上面提到的1,2点.正常200请求会执行默认的filter等阶段.
而当是404请求时,跳过了这些阶段.可能500请求也类似.
仅仅是猜测,还未验证,
相关文章推荐
- asp.net mvc输出自定义404等错误页面,非302跳转
- 在ASP.NET MVC 如何在Response.StatusCode = 404的同时,显示友好的自定义错误页面
- 新西兰程序员 ASP.NET网站中设置404自定义错误页面
- ASP.NET MVC 3 中,自定义全局的错误处理页面
- Asp.net MVC 自定义错误页面以及return HttpNotFound遇到的问题
- ASP.NET网站中设置404自定义错误页面
- ASP.NET MVC制作404跳转实例(非302和200)
- ASP.NET自定义错误页面
- asp.net网站的404错误页面的正确设置方法第1/2页
- apache之404错误页面自定义跳转说明
- asp.net中自定义错误处理页面
- ASP.NET自定义错误页面
- asp.net网站的404错误页面的正确设置方法第1/2页
- ASP.NET自定义的错误页面
- ASP.NET 记录页面错误及自定义错误页
- ASP.NET自定义错误处理页面的添加
- Asp.net Mvc自定义目录结构后分析器错误解决
- ASP.NET自定义错误页面
- Asp.Net自定义错误页面
- 怎么处理404 错误页面 、处理404页面、asp.net 处理404页面