2011-08-18 3 views
0

우리는 클라이언트 용 웹 서비스를 개발 중입니다. 우리는 SoapExceptions을 던지기를 꺼려하지 않으므로 대신 모든 예외 서버 측을 잡아서 사용자 정의 Exception 클래스를 반환합니다. asmx asp.net webservice 여러 클래스를 반환합니다 wsdl

Public Class Order 
... 
End Class 

Public Class MyException 
... 
End Class 

그리고

다음 내 웹 서비스 기능 (의 WebMethod)에 :

지금
Public Function GetOrder(ByVal id As Integer) As Object 

    Try 
     ... 
     Return New Order() 
    Catch ex As Exception 
     Return New MyException(ex.Message) 
    End Try 

End Function 

문제이며, 나의의 WebMethod는 유형 [개체] 반환 이후있다. 생성 된 wdsl에는 주. 또는 예외가 없습니다.

[개체]를 [순서] 또는 [MyException]로 변경할 수 있지만 wsdl에서 그 중 하나만 생성됩니다.

아무도 내가 이것을 어떻게 처리해야하는지 생각하지 않습니까? MyException 형식과 Order 형식을 wsdl에 모두 넣길 원하지만 그럴 수 없다.

감사합니다.

답변

2

Public Class MyException 
     inherits System.Exception 
    ... 
    End Class 

MyException

의 당신의 정의는 다음 사용자 정의 예외를 반환 할 필요가 없습니다 경우 그냥 던져. 당신이 정말로 돌아가려면

+0

안녕 딘, 감사 의견을 남겨주, 나는 이런 식으로 할 수있어,하지만 난이 예외는 아니 그 던질 때 문제는, 내 사용자 정의 예외 클래스는 직렬화되고 클라이언트에 보냈지 만, 그냥 던져 일반 SoapException. 여기에서 잃어버린 일종의 ... 더 이상 아이디어가 없습니까? – Vincent

1

매우 귀찮은 것을 입증 할 수있는 웹 방법에서 여러 개체를 반환하려고 내 기억으로

당신은

Public Function GetOrder(ByVal id As Integer) As Order 

    Try 
     ... 
     Return New Order() 
    Catch ex As Exception 
     Throw New MyException(ex.Message) 
    End Try 

End Function 

를 정의 할 수 있습니다 (그리고 그것은 오랜만이야) 여러 객체가 있다면 다음과 같이 "wrapper"객체를 만들어야합니다.

'please note: I don't normally use VB.NET, so there might be some errors 
Public Class OrderResponse 

Public Property Order() As Order 
    Get 
     Return m_Order 
    End Get 
    Set 
     m_Order = Value 
    End Set 
End Property 
Private m_Order As Order 

Public Property Exception() As MyException 
    Get 
     Return m_Exception 
    End Get 
    Set 
     m_Exception = Value 
    End Set 
End Property 
Private m_Exception As MyException 
End Class 

그런 다음 해당 클래스의 인스턴스를 반환하도록 메소드를 변경하고, 각각의 값으로 설정 속성 주문 또는 예외 중 하나에 :

Public Function GetOrder(ByVal id As Integer) As OrderResponse 
    ... 
End Function 
관련 문제