2013-05-06 5 views
2

У меня есть страница, которая выполняет jQuery Ajax вызывает WebMethod на одной из моих ASPX-страниц. В некоторых случаях мой WebMethod генерирует исключение с сообщением об ошибке. Это сообщение об ошибке действительно важно для пользовательского интерфейса, потому что оно говорит, что сказать пользователю, поэтому он может исправить свою форму.Получение сообщения об ошибке из WebMethod при сохранении безопасности Web.Config

Это прекрасно работает в сфере охраны окружающей среды. Но, в моем производстве Web.Config, мне нужно сохранить customErrors, установленным на «On», поэтому я не буду показывать важную информацию. Более того, мой IIS также переопределяет ошибки HTTP 500.

Я попробовал WebServices от ASMX, и он отлично работал. IIS не перекрывал мой HTTP 500, и customErrors не скрывал сообщение, отправленное WebService. Но перенос всех моих WebMethodов ASPX в ASMX-файлы пока невозможен.

Я ищу руководство. Как мой пользовательский интерфейс может получить мои ошибки в WebMethod, сохраняя мой Web.Config безопасным для производства?

ответ

1

Вы должны Никогда показать желтый экран смерти пользователю.

Вместо этого рассмотрите возможность реализации объекта Response, связанного с булевым успехом, ErrorMessage (строка) и фактическими данными результата, если это необходимо.

Затем вы можете использовать обратный вызов JavaScript и проверить, был ли вызов завершен. Если это не так, просто сообщите() сообщение об ошибке.

+0

Вот что я, наконец, сделал. Но мне не нравится это решение, потому что serveur всегда отвечает Http 200, даже если есть ошибка. Знаете ли вы способ справиться с моими исключениями, используя http-стандарт? – NLemay

+1

500 - это не лучший способ справиться с этим, используя стандарт HTTP, поскольку это означает внутреннюю ошибку. Если вы хотите обработать его стандартом HTTP, используйте спецификацию для каждого. Если ошибка исходит от клиента (т. Е. Вы отправляете данные с помощью jQuery, и эти данные недопустимы), используйте коды состояния 4XX. Исходя из этого, вы можете использовать неудачный обратный вызов из вызовов jQuery AJAX (см. [This] (http://api.jquery.com/jQuery.ajax/#example-3) для примера). Использование неудачного обратного вызова позволяет вам показывать сообщение, не отображая экран ошибки – CharlesAD

+1

Тем не менее, хотя это хороший подход, это не так важно при использовании WebMethods, так как они не очень RESTful. Возможно, вы должны проверить веб-API ASP.NET, чтобы узнать, приспосабливаются ли они к вашей потребности (методы asmx/page стареют) – CharlesAD

Смежные вопросы