2008-11-05 4 views
2

VB에서 코딩 된 ASP.NET 사이트에 대한 모든 아약스 요구를 처리하기 위해 jQuery를 사용하고 있습니다. $ .ajax 내장 함수를 사용하여 코드 숨김 기능으로 POST하고 예외가 발생하면 함수가 종료되고 클라이언트 측에서 오류가 표시됩니다.jQuery 아약스를 사용할 때 VB.NET에서 예외를 catch하는 방법

코딩 할 때 디버깅을 어렵게 만드는 것 외에 더 큰 문제는 예외가 발생할 때 Global.asax의 Application_Error 함수가 실행되지 않는다는 것입니다. 이로 인해 생산 오류를 추적하는 것이 거의 불가능합니다.

왜 Application_Error가 발생하지 않습니까? Catch 문에서 코드 숨김 함수를 래핑하는 방법은 무엇입니까?

jQuery를 아약스 기능 :

$.ajax({ 
    type: "POST", 
    url: "page.aspx/GetData", 
    data: "{'param':'" + param_value + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 

    success: function(msg) { 
     processData(msg); 
    }, 

    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Error: " + textStatus + " - " + errorThrown); 
    } 
}); 

VB.NET 기능 :

당신이 ScriptManager object에서 끌어와 함께 당신의 자바 스크립트를 등록 할 수 있습니다 닷넷 3.5으로,이 닷넷을 관리 할 수 ​​있습니다
<Script.Services.ScriptMethod()> _ 
<WebMethod()> _ 
Public Shared Function GetData(ByVal param As Integer) As String 
    'Parse some data 
    Return data 
End Function 
+0

GetData 메서드 자체가 아니라 catch-all Application_Error에서 오류를 처리해야하는 이유가 있습니까? –

+0

단순화를 위해. 예외 처리 코드는 모든 단일 웹 메서드에 대해 Catch 블록을 작성하는 대신 한 번만 작성하면됩니다. –

답변

0

스크립트 (이것은 MS Ajax 용 jsut가 아니며 타사 라이브러리와도 작동합니다)가 해결책이 될 수 있습니다.

1

해결 방법을 찾았습니다. Application_Error 이벤트를 발생시키는 오류를 직접 얻을 수있는 방법을 찾지 못했지만 실제로 예외 텍스트가 들어있는 jQuery XMLHttpRequest 객체의 속성을 발견했습니다.

error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert("Error: " + XMLHttpRequest.responseText); 
} 

또 다른 아이디어는 모든 오류 이벤트 로직을 처리하는 웹 메소드에 AJAX를 통해 오류를 제출하는 것입니다 : 여기

는 경고에 오류가 표시됩니다 예입니다.

관련 문제