asp.net ajax异常处理

msdn官方示例:http://msdn.microsoft.com/zh-cn/library/bb398934%28v=VS.90%29.aspx

总的来说,

1,注册ScriptManagerAsyncPostBackError事件,并在服务器实现它,并抛出被处理过的异常(根据是否为null,可能需要抛出e.Exceptione.Exception.innerException

2,客户端用JS来响应,Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);添加处理程序

3,实现EndRequestHandler,错误信息基本在第二个参数"args“里面,

4,此时已经完成,由于网上没搜到现成文档(有的话请留言),这个args里面到底有什么经过我的枚举,暂列如下

内容比较多,我还是先把枚举的方法写出来吧:

注:下面内容是临时写的,并没有用到递归,也就是说,可能结果还不是完整的,有兴趣的可以自己拿去改造

但我们一般用到的,基本上都在了

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

function EndRequestHandler(sender, args) {
    //if (args.get_error() != undefined) {alert(args.get_error().message.replace(/.*Exception:/,'')); args.set_errorHandled(true);  }
    if (args.get_error() != undefined) {
        var members = 'The \'args\' members are:\n\n';
        for (var i in args) {
            members += '\t' + i;
            var ai = eval("args." + i);
            if (typeof ai == "function") {
                try {
                    members += "()";
                    ai = eval("args." + i+"()");
                } catch (err) {
                    members += " not implement \n";
                    continue;
                }
            }
            members += '\n';
            if (typeof ai == "string") continue;
            for (var t in ai) {
                members += '\t\t' + t;
                if (typeof ai == "function")
                    var ait = eval("args." + i + "()." + t);
                else
                    var ait = eval("args." + i + "." + t);
                if (typeof ait == "function") {
                    try {
                        members += "()";
                        ait = eval("args." + i + "." + t + "()");
                    } catch (err) {
                        members += " not implement \n";
                        continue;
                    }
                }
                members += "\n";
                if (typeof ait == "string") continue;
                for (var m in ait) {
                    members += '\t\t\t' + m + '\n';
                }
            }
        }
        document.write("<textarea style='width:1000px; height:600px;'>"+members+"</textarea>");//members如果显示请自行处理
        args.set_errorHandled(true);
     }
}

结果:

The 'args' members are:

	_errorHandled
	_error
		message
		name
		httpStatusCode
			format
			localeFormat
			_toFormattedString
		stack
		fileName
		lineNumber
			format
			localeFormat
			_toFormattedString
		popStackFrame()
	_dataItems
	_response
		_webRequest
			_url
			_headers
			_body
			_userContext
			_httpVerb
			_executor
			_invokeCalled
			_timeout
			_events
			add_completed
			remove_completed
			completed
			_get_eventHandlerList
			get_url
			set_url
			get_headers
			get_httpVerb
			set_httpVerb
			get_body
			set_body
			get_userContext
			set_userContext
			get_executor
			set_executor
			get_timeout
			set_timeout
			getResolvedUrl
			invoke
			constructor
		_resultObject
		_xmlHttpRequest
			dispatchEvent
			removeEventListener
			onreadystatechange
			open
			readyState
			setRequestHeader
			send
			status
			responseText
			channel
			responseXML
			statusText
			abort
			getAllResponseHeaders
			getResponseHeader
			sendAsBinary
			overrideMimeType
			multipart
			mozBackgroundRequest
			withCredentials
			upload
			onuploadprogress
			onabort
			onerror
			onload
			onloadstart
			onprogress
			getInterface
		_responseAvailable
		_timedOut
		_timer
		_aborted
		_started
		_onReadyStateChange()
		_clearTimer()
		_onTimeout()
		get_timedOut()
		get_started()
		get_responseAvailable()
		get_aborted()
		executeRequest() not implement 
		getResponseHeader() not implement 
		getAllResponseHeaders() not implement 
		get_responseData() not implement 
		get_statusCode() not implement 
		get_statusText() not implement 
		get_xml() not implement 
		abort()
		constructor()
		get_webRequest()
		_set_webRequest()
		get_object() not implement 
	get_dataItems()
	get_error()
		message
		name
		httpStatusCode
		stack
		fileName
		lineNumber
		popStackFrame
	get_errorHandled()
	set_errorHandled() not implement 
	get_response()
		_webRequest
		_resultObject
		_xmlHttpRequest
		_responseAvailable
		_timedOut
		_timer
		_aborted
		_started
		_onReadyStateChange
		_clearTimer
		_onTimeout
		get_timedOut
		get_started
		get_responseAvailable
		get_aborted
		executeRequest
		getResponseHeader
		getAllResponseHeaders
		get_responseData
		get_statusCode
		get_statusText
		get_xml
		abort
		constructor()
			callBaseMethod
			getBaseMethod
			getBaseType
			getInterfaces
			getName
			implementsInterface
			inheritsFrom
			initializeBase
			isImplementedBy
			isInstanceOfType
			registerClass
			registerInterface
			resolveInheritance
			registerEnum
		get_webRequest
		_set_webRequest
		get_object
	constructor() not implement 
posted @ 2011-01-28 16:56  $walker  阅读(522)  评论(0编辑  收藏  举报