2008-11-07 5 views
3

상황은 이렇습니다. 나는 asp.net의 웹 서비스 응용 프로그램을 가지고 ... 내가 예를 들어, 여러 가지 방법이 뒤에 코드에서 api.asmx웹 서비스에서 호출 된 WebMethod를 확인하려면 어떻게해야합니까?

라는 페이지를 말한다 : 물론

[WebMethod(Description="Method1")] 
public int GetSomething(int num1, int num2){ 
    try{ 
    return SomeObject.DatabaseCall.DoSomething(num1, num2); 
    } 
    catch(Exception ex){ 
    object[] pars = new object[] { num1, num2 }; 
    LogError("GetSomething", pars, ex); 
    } 
} 

[WebMethod(Description="Method2")] 
public int GetSomething2(string w, string j, int f){ 
    try{ 
    return AnotherObject.DoSomething(w, j, f); 
    } 
    catch(Exception ex){ 
    object[] pars = new object[] { w, j, f }; 
    LogError("GetSomething2", pars, ex); 
    } 
} 

이는 두 가지 간단한 예 곳은 , 예외가 발생하면 전달 된 메서드 호출과 매개 변수를 기록 할 수 있습니다.

다른 방법이 있습니까? 호출되는 메서드 및/또는 매개 변수를 추출 할 수있는 방법이 있습니까?

LogError(ex); 

그리고 그 함수 내에서 내가하는 방법이 호출되고 노출이 될 몇 가지 서버 또는 환경 변수에 액세스 할 수 있습니다 : 나는 누군가가 그냥 같은 기능의 어떤 종류를 가질 수 있다고 말해 것입니다 바라고 있어요 같아요. 어쩌면 CurrentContext.WebServiceCall.Magic 속성과 같은 것입니다 ... try/catch에서 모든 호출을 래핑 한 다음 메소드 이름과 매개 변수를 입력하거나이 정보에 액세스하는 다른 방법이 필요합니다.

잘하면이 질문 ins't 너무 바보.

답변

0

LogError 메서드는 Environment.StackTrace을 호출 할 수 있습니다. 그런 다음 어떤 방법으로 그것을 호출했는지 "알 것"입니다.

1

예외 개체에는 StackTrace 속성이 있습니다. 진입 방법은 스택에 있어야합니다.

2

처리되지 않은 예외는 Global.asax 파일의 Application_Error 이벤트까지 버블 링됩니다. 거기에서 Server.GetLastError()를 호출하여 Exception 인스턴스를 검색 할 수 있습니다.

일단 예외가 발생하면 스택 추적을 볼 수 있습니다. 또한 Request 객체에 액세스 할 수 있으므로 클라이언트에서 발생한 내용을 정확히 볼 수 있습니다.

관련 문제