Ahora estoy jugando con WebServices, usando .NET framework (archivos .asmx, no WCF). Me pregunto cuál es la mejor práctica para decirle al usuario que ha ocurrido algún tipo de error comercial en la llamada al método.Mejores prácticas para el manejo de errores en un servicio web
Mi pequeño caso de prueba:
He sondas de medición que deben registrarse en un servidor central. Cada sonda debe tener una dirección física diferente. Para inscribirse, deben llamar al (a través de un servicio web):
[WebMethod]
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress)
Ahora, la firma no está escrito en piedra - en realidad, eso es lo que estoy tratando de averiguar. :) Necesito de alguna manera alertar a la sonda si está tratando de registrarse usando una dirección física que ya está tomada.
La forma en que lo veo, me dieron unas cuantas posibilidades:
- lanzar una SoapException que contiene la información. Sin embargo, un mensaje de cadena :: no es realmente tan fácil de hacer verificaciones programáticas.
- Utilice algún tipo de valor-clase como parámetro de retorno (o incluso más simple, una enumeración). Si hago esto, ¿supongo que tuve que serializar/deserializar manualmente la clase en el servidor/cliente?
¿Alguna idea de esto?
Eek, de vuelta a los C-días. El problema con este enfoque es que no es muy flexible. No puede agregar mensajes de error personalizados como un stacktrace o un mensaje o ... Puedo ver que esta sería la salida fácil y multi-compatible. – cwap
Tengo una apreciación adquirida por los servicios web que se apartan del lado de la simplicidad. –
Aunque esta no es la respuesta más votada, la aceptaré. Me gusta el aspecto "Webservices debería ser simple de usar", así que esto es lo que me apegaré por ahora :) – cwap