.net中自定义错误页面的实现升级篇中自定义错误页面的实现升级篇
主要给大家介绍了关于.net中自定义错误页面实现的相关资料,这篇文章是之前的升级篇,对大家的学习或者工
作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
问题描述:问题描述:
在上一篇博文 “.net自定义错误页面实现” 中已经介绍了在.net中如何实现自定义错误页面实现(有需要者可以去上一篇博文了
解),单纯按照上一篇博文那样设置,能够实现所有请求的异常自定义跳转,但是这样又会产生一个问题:当通过ajax提交请
求获取接口提交请求,如果出现未处理的异常也会被重定向到自定义错误页面。
针对ajax请求或者接口请求,这样返回一个重定向页面,用户体验显然不是太友好,针对这个问题,下面简单总结一下我自己
的想法和解决方案,当然不一定科学和合理,所以也希望有大牛多多指点。
解决思路,我想到的有二:解决思路,我想到的有二:
解决方案一:解决方案一:
从物理结构上分割,将web项目严格分割成两个项目(当然可根据需要继续细分):网站(只有网站页面资源等内容)、接口
(包括网站的所有数据逻辑处理,页面的数据请求交互都是直接同接口交互(js技术)),只是网站项目按照上一篇博文方式
设置自定义错误页面方式,这样是能够解决问题,项目也会更加的清晰,也有很多公司的项目就是按照这种方式(尤其是
webApp),但是在实际项目中,很多项目是没有达到这种严格区分的,所以下面的解决方案二,将介绍一个更通用的方式
解决方法二:解决方法二:
解决思路是:将上一篇博文.net自定义错误页面实现 与 上上一篇博文 .net捕捉全局未处理异常的3种方式 结合使用,并在实际
开发中严格约定(出了url地址请求以外的其他请求都通过post请求实现交互),在扑捉到异常时,如果是post请求,处理异
常,并清除异常。具体以步骤如下:
第一步:定义一个请求处理结果数据MODEL,代码如下:
/// <summary>
/// 请求结果MRequestResult
/// </summary>
public class MRequestResult
{
/// <summary>
/// 请求结果编码(是一个枚举值)
/// </summary>
private RequestResultCodeEnum requestResultCode;
/// <summary>
/// 处理结果具体的返回值
/// </summary>
private object resultValue;
/// <summary>
/// 请求结果编码(是一个枚举值)
/// </summary>
public RequestResultCodeEnum RequestResultCode
{
get
{
return this.requestResultCode;
}
set
{
this.requestResultCode = value;
}
}
/// <summary>
/// 处理结果具体的返回值
/// </summary>
public object ResultValue
{
get
{
return this.resultValue;
}
set
{
this.resultValue = value;
}