AJAX.NET请求时发生异常处理方案
2007-07-06 14:06
459 查看
1、 Ajax+WebServer请求时发生异常;
Web程序在运行中会有很多不确定性,从网络状况的不稳定到开发者的粗心大意,任何一个难以预料的问题均会导致某次异步调用以失败告终。
因此,在ASP.NET AJAX异步通讯层的实现中,自然也内建了对异步调用时异常的处理方法。在客户端调用Web Service代理语法:
[NameSpace].[ClassName].[MethodName](param1, param2 …, callbackFunction)
在调用成功的回调函数callbackFunction的后面,我们还可以提供另一个调用失败的回调函数。这样,客户端调用Web Service代理的语法就变为:
[NameSpace].[ClassName].[MethodName](param1, param2 …, onSucceeded, onFailed)
注意其中粗体部分新添加的onFailed回调函数,该函数将在本次异步通讯出现异常时由ASP.NET AJAX异步通讯层调用。而onSucceeded的行为则不会收到任何影响,仍将在成功调用后执行。
onFailed回调函数将接受一个类型为Sys.Net.WebServiceError的参数,表示异常对象。其函数签名将类似如下所示:
function onFailed(error) {
// 取得异常信息并处理
}
ASP.NET AJAX的客户端Sys.Net.WebServiceError类型封装了异步请求服务器时可能发生异常,它提供了若干个只读的属性,提供了对异常信息的详细描述。Sys.Net.WebServiceError类型的属性如表3-1所示。
表3-1 Sys.Net.WebServiceError类型的属性
属性名:描述
exceptionType:获取服务器端异常的具体类型
message:获取详细的异常描述信息
statusCode:获取造成异常的HTTP响应的状态码
stackTrace:获取服务器端异常的堆栈跟踪信息
timedOut:获取一个布尔值,表示异常是否是由于网络连接超时造成的
注意:根据ASP.NET AJAX客户端组件的命名规范,访问属性均需要在属性名称前加上“get_”或“set_”前缀。例如,若想得到某个Sys.Net.WebServiceError类型异常的message属性值,则应该按照如下方式书写代码:
var errorMessage = errorObj.get_message();
/article/4589371.html
2、 Ajax.net请求时发生异常(客户端处理);
//ASP.NET AJAX 语法的语句不能写在Head里面,否则将会出现“Sys not defined ”之类的错误
//定义PageRequestManager类的endRequest事件处理,当请求完毕时自动触发
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined)
{
//如果Ajax.Net在客户端发生异常,则在此做相关处理
//var errorMessage;
//if (args.get_response().get_statusCode() == '200')
//{
// errorMessage = args.get_error().message;
//}
//else
//{
// errorMessage = 'An unspecified error occurred. ';
//}
//设置IE不在对错误做处理
args.set_errorHandled(true);
}
}
http://www.cnblogs.com/hzuIT/articles/752174.html
3、 Ajax.net请求时发生异常(服务器端处理);
ScriptManager控件
添加如下代码到AsyncPostBackError事件处理,对捕获的异常做相应的信息组织和处理。下例对服务器返回的异常信息优化。
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
if (e.Exception.Data["ExtraInfo"] != null)
{
ScriptManager1. AsyncPostBackErrorMessage =
e.Exception.Message +
e.Exception.Data["ExtraInfo"].ToString();
}
else
{ ScriptManager1.AsyncPostBackErrorMessage =
"An unspecified error occurred.";
}
}
检测异常的ExtraInfo是否为空,并设置为ScriptManager控件的AsyncPostBackErrorMessage,如果不设置则会创建一个默认的异常。
http://www.cnblogs.com/hzuIT/articles/752174.html
Web程序在运行中会有很多不确定性,从网络状况的不稳定到开发者的粗心大意,任何一个难以预料的问题均会导致某次异步调用以失败告终。
因此,在ASP.NET AJAX异步通讯层的实现中,自然也内建了对异步调用时异常的处理方法。在客户端调用Web Service代理语法:
[NameSpace].[ClassName].[MethodName](param1, param2 …, callbackFunction)
在调用成功的回调函数callbackFunction的后面,我们还可以提供另一个调用失败的回调函数。这样,客户端调用Web Service代理的语法就变为:
[NameSpace].[ClassName].[MethodName](param1, param2 …, onSucceeded, onFailed)
注意其中粗体部分新添加的onFailed回调函数,该函数将在本次异步通讯出现异常时由ASP.NET AJAX异步通讯层调用。而onSucceeded的行为则不会收到任何影响,仍将在成功调用后执行。
onFailed回调函数将接受一个类型为Sys.Net.WebServiceError的参数,表示异常对象。其函数签名将类似如下所示:
function onFailed(error) {
// 取得异常信息并处理
}
ASP.NET AJAX的客户端Sys.Net.WebServiceError类型封装了异步请求服务器时可能发生异常,它提供了若干个只读的属性,提供了对异常信息的详细描述。Sys.Net.WebServiceError类型的属性如表3-1所示。
表3-1 Sys.Net.WebServiceError类型的属性
属性名:描述
exceptionType:获取服务器端异常的具体类型
message:获取详细的异常描述信息
statusCode:获取造成异常的HTTP响应的状态码
stackTrace:获取服务器端异常的堆栈跟踪信息
timedOut:获取一个布尔值,表示异常是否是由于网络连接超时造成的
注意:根据ASP.NET AJAX客户端组件的命名规范,访问属性均需要在属性名称前加上“get_”或“set_”前缀。例如,若想得到某个Sys.Net.WebServiceError类型异常的message属性值,则应该按照如下方式书写代码:
var errorMessage = errorObj.get_message();
/article/4589371.html
2、 Ajax.net请求时发生异常(客户端处理);
//ASP.NET AJAX 语法的语句不能写在Head里面,否则将会出现“Sys not defined ”之类的错误
//定义PageRequestManager类的endRequest事件处理,当请求完毕时自动触发
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined)
{
//如果Ajax.Net在客户端发生异常,则在此做相关处理
//var errorMessage;
//if (args.get_response().get_statusCode() == '200')
//{
// errorMessage = args.get_error().message;
//}
//else
//{
// errorMessage = 'An unspecified error occurred. ';
//}
//设置IE不在对错误做处理
args.set_errorHandled(true);
}
}
http://www.cnblogs.com/hzuIT/articles/752174.html
3、 Ajax.net请求时发生异常(服务器端处理);
ScriptManager控件
添加如下代码到AsyncPostBackError事件处理,对捕获的异常做相应的信息组织和处理。下例对服务器返回的异常信息优化。
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
if (e.Exception.Data["ExtraInfo"] != null)
{
ScriptManager1. AsyncPostBackErrorMessage =
e.Exception.Message +
e.Exception.Data["ExtraInfo"].ToString();
}
else
{ ScriptManager1.AsyncPostBackErrorMessage =
"An unspecified error occurred.";
}
}
检测异常的ExtraInfo是否为空,并设置为ScriptManager控件的AsyncPostBackErrorMessage,如果不设置则会创建一个默认的异常。
http://www.cnblogs.com/hzuIT/articles/752174.html
相关文章推荐
- asp.net访问access 发生了未处理的异常 "操作必须使用一个可更新的查询"错误
- 想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常
- asp.net Ajax Post 请求一般处理程序
- 在ASP.NET中使用IHttpHandler处理请求(如自实现AJAX)时,无法获得Session(或者说是Session 为 null)的原因及解决方法
- asp.net ajax异常处理
- 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或打开对每个 Microsoft .NET Framework SDK 文档的跟踪并检查服务器跟踪日志。
- Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
- [置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
- ASP.NET AJAX入门系列:自定义异常处理 (转)
- SpringMVC对异常进行全局处理,并区分对待ajax和普通请求
- ASP.NET AJAX in Action—ScriptManager异常处理示例
- 【转】ASP.NET中OutOfMemoryException异常的处理方案
- Ajax程序:处理异步调用中的异常(在客户端调用Web Service代理时发生异常的处理办法)
- ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误
- b2cf .net mvc Angular2项目 ajax请求返回结果异常处理
- ASP.NET错误异常分类处理 过滤请求内容
- ajax请求时session已过期处理方案
- Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
- asp.net ajax异常处理
- 过多的ajax请求处理方案