Исключение c # неправильно перехвачено jquery ajax - PullRequest
9 голосов
/ 22 февраля 2012

хорошо, у меня проблема с производственной средой и как jquery ajax фиксирует ошибку.

В моей среде разработки на моей локальной машине, когда jquery ajax вызывает веб-сервис [webmethod] и webmethod выдает конкретную ошибку, jquery ajax фиксирует это правильно, но в рабочей среде jquery ajax фиксирует ошибку, но сообщение является общим "Прошла ошибка при обработке запроса." с «Внутренней ошибкой сервера»

например

Код c #

[WebMethod]
public String dostuff(String Auth){
// some code here
// if error occurs
throw new Exception("Some specific error message");
return "ok";
}

вызов jquery ajax

    var data = JSON.stringify({ Auth: "some data here" }, null);

    $.ajax({
        type: "POST",
        url: '/Services/memberService.asmx/dostuff',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            alert(result.d); // alert ok
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("responseText=" + XMLHttpRequest.responseText + "\n textStatus=" + textStatus + "\n errorThrown=" + errorThrown);
        }
    });

на моей локальной машине XMLHttpRequest.responseText равен «Некоторое конкретное сообщение об ошибке»

в производственной среде XMLHttpRequest.responseText равен «Произошла ошибка при обработке запроса.»

локальная среда Windows 7 Home Premium с IIS 7.5.7600.16385

производственной средой является Windows Server 2008 R2 с IIS 7.5.7600.16385 (аналогично среде разработки)

почему разница и как заставить производственную среду выдавать конкретную ошибку?

********* просто продолжение .. tnx Джастин *************

я добавил файл web.config в папку сервисов (Дох ... интересно, почему я об этом не подумал)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
      <customErrors mode="Off" />
    </system.web>
</configuration>

1 Ответ

14 голосов
/ 22 февраля 2012

По умолчанию .NET-приложения настроены так, чтобы показывать только определенную информацию об исключениях на локальном сервере.

Это позволяет злоумышленникам не получать конкретную информацию об исключениях для вашего сайта на основе своих атак.Обычно считается плохой идеей изменить это поведение.

Если необходимо, вы можете изменить:

<customErrors mode="RemoteOnly" />

На:

<customErrors mode="Off" />

И еслиВы хотите показать ошибки для папки Services:

<location Path="/Services">
    <system.web>
        <customErrors mode="Off" />
    </system.web>
</location>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...