2012-01-10 3 views
0

asmx 서비스를 구현하는 클래스가 있습니다.전역 오류 처리 asmx

class AsmxService{ 
public string Method(int i){.....} 
....} 

일부 속성은 생략하지만 필요한 경우 전체 코드를 제공 할 수 있습니다.

함수에 예외가 발생하는 경우 문제가되지 않습니다. 단지 try-catch를 사용하십시오. 그러나 함수 밖에서 오류가 발생하면 어떻게해야합니까? 예를 들어 클라이언트가 잘못된 int 매개 변수 나 다른 것을 전달했습니다. 이 경우 클라이언트 측에서 예외에 대한 메시지를받습니다. 그러나 나는 오류의 모든 세부 사항을 숨기고 항상 다음과 같은 간단한 통지를 리턴한다. "오류가 발생했습니다. 요청을 처리 할 수 ​​없습니다".

SOAP 확장 모듈을 작성하려고했지만 예외가 asmx와 관련되어 있음을 발견했습니다.

전혀 가능하며 대답이 '예'일 경우 어떻게해야합니까?

때때로 stackaverflow에서이 문제가 발생하는 것으로 보이지만 결정을 찾을 수 없었습니다.

답변

0

SOAP 확장 모듈과 관련하여 이미 살펴본 내용을 알지 못하지만 여기서는 a good example of one (기사의 중간에 시작됩니다)입니다. 나는 그것이 도움이되기를 바랍니다. 내가 제대로 이해하면

UPDATE

것은, 당신은 내부 서비스 코드 (난 당신이 이미 만족을 처리하는 가정)을 던져 예외를 잡기에 대해 물어되지 않습니다. 대신, 요청 메시지에 직렬화 복원 서버

  • 에 요청 메시지를 전송 요청 메시지
  • 으로 클라이언트 측 객체 일렬 즉

    • 의 ASP.NET 통신 스택에서 오류를 잡으려고 노력하고 있습니다 서버 쪽은 그렇다면 내가 당신이라면, 그럼 난 그냥하고는 ASP.NET 던져 완 어떤 예외하게 떠날 것이다
    • ... 그리고 응답

    에 대한 반대의 객체 ts. 나는이 말을하기 때문에 ...

    캐치 예외는 안쪽에 던져지며, 서비스 코드는 보안 관점에서 진정한 가치를 부여합니다. SOAP 오류에서 최소한의 세부 정보 만 반환하면 공격자가 서비스에 대해 너무 많이 배우는 것을 방지 할 수 있습니다. 이것은 모든 웹 서비스에 대한 모범 사례입니다.

    그러나 통신 스택에서 발생하는 예외를 포착해도 가치가있는 것은 아닙니다. 공격자는 "field X expected xs:int but passed xs:dateTime"과 같이 코드에 대해 아무 것도 배우지 않을 것입니다. 그는 이미 WSDL을 검토하여이를 알고 있습니다.

  • +0

    답변 해 주셔서 감사합니다.SOAPExtension을 사용한다는 것은 SOAP 처리되지 않은 예외 만 잡는다는 것을 의미합니다. 웹 브라우저 인터페이스를 사용하여 처리되지 않은 예외를 테스트 할 수 없습니다! 이것을 명심하십시오! 바로이 이유 때문에 솔루션에 데모 SOAP 콘솔 응용 프로그램이 포함되었습니다. SOAP 클라이언트에는 브라우저 인터페이스가 없으므로 Web Services에는 LogToUI 옵션을 사용할 수 없으며이 경우 무시됩니다. – DotNetter

    +0

    어쩌면 정확한 것이 아니며 asmx가 JSON 요청으로 JSON 서비스로 사용된다고 말하지 않았을 수도 있습니다. – DotNetter

    0

    웹 서비스 인프라에서 전송 한 오류에 대해 수행 할 수있는 조치는 없습니다. WCF를 사용한다면 거의 완벽하게 제어 할 수 있지만 ASMX를 사용하여 수행 할 수있는 방법은 없습니다.