webservice visual studio servicio net example create crear consumir asp asp.net vb.net wsdl asmx

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