Расширить исключение, выбрасываемое из ASP.NET при вызове веб-службы из JQuery - PullRequest
5 голосов
/ 13 мая 2009

Я использую JQuery для динамической загрузки элементов управления в среде разработки ASP.NET с использованием JSON и WebServices. В этом решении у меня есть уровень бизнес-логики, который имеет встроенный механизм проверки (т. Е. Проверка свойств и бизнес-правил, аналогичных CSLA)

При запросе динамической загрузки нового элемента управления с использованием JQuery и ASP.NET WebService я хотел бы проверить входные данные из текущего элемента управления в соответствии с механизмом проверки бизнес-логики (т. Е. Проверкой на стороне сервера) и уведомить пользователя в случае Были какие-то проблемы.

Мне удалось этого добиться, однако, когда в веб-службе произошла ошибка проверки, я хотел бы выдать исключение клиента, содержащее идентификаторы поля проверки и соответствующие сообщения об ошибках.

В JQuery я тестирую этот конкретный ExceptionType и хотел бы динамически применять сообщения об ошибках к элементам управления, перечисленным в свойствах типа исключения. Вот тут и возникает моя проблема. Несмотря на то, что я создал пользовательское исключение с пользовательскими свойствами, исключение, которое передается в JQuery в формате JSON из WebService, по-прежнему является стандартным исключением, и ни одно из перечисленных дополнительных свойств не указано. Я мог бы просто создать строку значений в формате JSON в свойстве сообщения исключения, но в конечном итоге предпочел бы что-то более элегантное. Кто-нибудь знает, как можно переопределить сериализованное исключение, созданное ASP.NET для таких ситуаций, как эта ...

Заранее спасибо ...

G

1 Ответ

3 голосов
/ 21 мая 2009

Я столкнулся с чем-то очень похожим пару дней назад - по сути, нет способа заставить ASP.NET генерировать пользовательские исключения. Это по проекту , так как возвращение определенного типа исключений будет

[...] выставить реализацию детали / ошибки клиентам. Мы могли бы сделать что-то с особым исключением тип, который мы пропустили, но его слишком поздно для этого релиза [...]

Вы всегда можете вернуть разные коды состояния HTTP , и браузер будет обрабатывать их как пользовательские исключения - например, ошибка 500 будет означать одно, а 401 - другое, и т. Д. решение состоит в том, чтобы заставить ваш метод возвращать строку со стеком исключений - не элегантно, но, по крайней мере, таким образом, клиент имеет все детали исключения.

Дейв Уорд также имеет информацию о ошибках службы ASP.NET AJAX .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...