asp.net - visual - web service vs 2017
Asmx asp.net webservice devolver mĂșltiples clases wsdl (2)
Si realmente desea devolver varios objetos, entonces quizás deba crear un objeto "envoltorio", por ejemplo, algo así:
''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
Luego, cambie su método para devolver una instancia de esa clase, ya sea con la propiedad Order o Exception establecida en el valor respectivo:
Public Function GetOrder(ByVal id As Integer) As OrderResponse
...
End Function
Estamos desarrollando un servicio web para un cliente. No tenemos la intención de arrojar SoapExceptions, por lo tanto, atrapamos cada lado del servidor de excepción y devolvemos una clase Exception personalizada.
Public Class Order
...
End Class
Public Class MyException
...
End Class
Y luego en mi servicio web una función (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
El problema ahora es que, dado que mi webmethod está devolviendo el tipo [Object]. El wdsl que se genera no contiene el orden o la excepción.
Puedo cambiar [Object] a [Order] o [MyException], pero solo uno de ellos se genera en el wsdl.
Entonces, ¿alguien tiene una idea de cómo debería manejar esto? Quiero tanto el tipo MyException como el tipo de orden en mi wsdl, pero simplemente no puedo hacer que funcione.
Gracias a todos.
Si su definición de MyException
Public Class MyException
inherits System.Exception
...
End Class
entonces no deberías necesitar devolver la excepción personalizada simplemente lanzarla.
entonces puedes definir
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
Como recuerdo (y ha pasado un tiempo) tratando de devolver múltiples objetos de un método web puede resultar extremadamente problemático