zoukankan      html  css  js  c++  java
  • 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='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 
    
  • 相关阅读:
    angular2^ typescript 将 文件和Json数据 合并发送到服务器(1.客户端处理)
    错误的尝试:回射程序改进2
    XML Schema笔记
    回射程序改进1
    DTD笔记
    XML语法笔记
    判断IPv6地址合法性
    线程相关函数(POSIX线程):
    使用string实现一个用于储存那些太大而无法使用 long long 的数
    基本SCTP套接字编程常用函数
  • 原文地址:https://www.cnblogs.com/walkerwang/p/1947132.html
Copyright © 2011-2022 走看看