До сих пор я пользуюсь ServiceStack с отличными результатами, за исключением того, что работа с ошибками кажется хитрой. Если что-то идет не так во время сериализации сообщения (потому что я забыл добавить конструктор по умолчанию к сообщению, например), все, что получает клиент, - это сообщение о том, что на сервере произошла внутренняя ошибка, и код состояния 500. Добавление слушателя в Событие HttpApplication.Error
в Global.asax не работает, так как его никогда не ударили. Ни один не делает Application_Error
. Мало того, что этого недостаточно для сценариев конечных пользователей, это делает отладку этих ошибок очень громоздкой, поскольку единственный способ выяснить, что пошло не так, это уродливое выражение в Quick Watch:
Encoding.Default.GetString( ((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer)
Мне хотелось бы перехватить все ошибки на стороне сервера (будь то сериализация с помощью ServiceStack или ошибки в моих службах) и добавить необходимую информацию в коллекцию Errors
, которая есть во всех моих типах сообщений.