Возвращение Json в качестве ActionResult не пропустит сообщение об исключении - PullRequest
0 голосов
/ 07 января 2011

Итак, у меня на странице есть ссылка, которая приводит к поломке некоторого кода. Код генерирует исключение, которое заставляет мой код переходить в блок «Catch» на моем контроллере. Блок catch выглядит следующим образом:

catch (Exception e)
{
    return Json(e.ToString());
}

Что происходит, я вижу эту ошибку на переднем конце:

This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.

Теперь, если я изменю поведение вышеприведенного оператора return на следующее:

return Json(e.ToString(), JsonRequestBehavior.AllowGet);

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

Что здесь происходит и как мне это исправить?

1 Ответ

0 голосов
/ 08 января 2011

Действие, которое возвращает JSON, должно быть вызвано с использованием AJAX.Если вы просто поместите на своей странице ссылку, указывающую на это действие, поскольку сервер возвращает JSON, браузер не знает, что с ним делать.Так, например, если вы используете jquery, вы можете использовать метод $.getJSON() для вызова этого действия:

$(function() {
    $.getJSON('<%= Url.Action("SomeAction") %>', { }, function(result) {
        // do something with the result
        alert(result);
    });
});

Есть два других случая, о которых я могу подумать, когда вы используете сценарийописание может произойти:

  • У вас есть AJAXified ссылка, указывающая на это действие контроллера, но у вас есть ошибка javascript, и браузер просто переходит по ссылке, отправляющей запрос GET
  • У вас AJAXified aссылка, указывающая на это действие контроллера, но вы забыли отменить действие по умолчанию, вернув false из обратного вызова .click(), и браузер просто переходит по ссылке, отправляющей запрос GET
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...