Теперь я просматриваю WebServices, используя .NET framework (файлы .asmx, а не WCF). Мне интересно, что лучше всего сказать пользователю, что в вызове метода произошла какая-то бизнес-ошибка.Рекомендации по обработке ошибок в веб-службе
Мой маленький тест-случай:
Я измерительных зондов, которые должны регистрироваться с центральным сервером. Каждый зонд должен иметь другой физический адрес. Для регистрации, они должны вызвать (через веб-службы):
[WebMethod]
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress)
Теперь подпись не высечены в камне - на самом деле, это то, что я пытаюсь выяснить. :) Мне нужно как-то предупредить зонд, если он пытается зарегистрировать себя, используя уже принятый физический адрес.
Как я вижу это, я получил несколько возможностей:
- кинуть SoapException, содержащий информацию. Тем не менее, string :: message на самом деле не так просто выполнять программные проверки.
- Используйте некоторый класс значений в качестве параметра возврата (или даже проще, перечисление). Если я это сделаю, то, наверное, мне пришлось вручную сериализовать/десериализовать класс на сервере/клиенте?
Любые мысли об этом?
Eek, обратно в C-дней. Проблема с этим подходом заключается в том, что он не очень гибкий. Вы не можете добавлять сообщения об ошибках, такие как stacktrace или сообщение, или .. Я вижу, что это будет простой и многопроцессорный выход. – cwap
Я получил признательность за веб-службы, которые ошибаются в стороне простоты. –
Хотя это не самый высокий голос, я согласен с этим. Мне нравится, что «веб-сервисы должны быть просты в использовании», так что это то, на что я нахожусь сейчас :) – cwap