Как вернуть информацию об ошибке (как ошибку!) Из действия ajax? - PullRequest
0 голосов
/ 05 декабря 2011

Я написал простой атрибут фильтра, реализующий интерфейс IExceptionFilter, который обрабатывает исключения, только если они возникают в действиях AJAX.В сети есть много примеров.Выберите любой из них.Однако я добавил одну строку:

filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

Это связано с тем фактом, что любой перехват фильтра исключений действительно является ошибкой, и я хочу, чтобы об этом сообщалось как таковое.Во-вторых, я просто не хочу оборачивать какие-либо ajax-ответы в какой-то объект {success: success, data: data}.

Теперь к проблеме: на моем компьютере разработчика все работает без сбоев: если происходит исключениеклиент получает json с описанием проблемы;если нет - возвращаемые данные - это то, что ожидается от вызывающей стороны.Как для локальных (кто просматривает сайт с одной машины), так и для удаленных клиентов.Но когда я развертываю приложение на другом сервере, ошибки возвращаются только в json для локальных клиентов, для всех остальных - это стандартная ошибка html-страницы. Почему это так? <customErrors /> Атрибут режима установлен на RemoteOnly на обоих сайтах.

1 Ответ

0 голосов
/ 06 декабря 2011

Вот как я это решил:

Я включил функцию отслеживания невыполненных запросов на втором компьютере. Затем я выполняю тот же запрос, который должен возвращать информацию об ошибке в json локально и с удаленной машины. Это дало мне два файла журнала. Я сравнил их и выяснил, что это как-то связано с

263.  NOTIFY_MODULE_START ModuleName="CustomErrorModule", Notification="SEND_RESPONSE", fIsPostNotification="false" 09:05:49.998 
264.  GENERAL_NOT_SEND_CUSTOM_ERROR Reason="EXISTINGRESPONSE_AUTO" 
265.  NOTIFY_MODULE_END ModuleName="CustomErrorModule", Notification="SEND_RESPONSE", fIsPostNotificationEvent="false", NotificationStatus="NOTIFICATION_CONTINUE"

Вот как я пришел к:

<httpErrors existingResponse="PassThrough" />

После этого я также проанализировал machine.config на обеих машинах. Ничего не нашел по этому вопросу. Это означает, что я до сих пор не знаю, почему он вел себя по-другому.

Есть мысли?

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