SadeqHatami Ответов: 2

500 Внутренняя ошибка сервера при передаче данных в $.ajax


привет,
я хочу передать данные в $.ajax, но когда я запускаю проект, я получаю нулевые данные в коде c# и получаю
500 Внутренняя ошибка сервера в элементе inspect

мой код таков :
function refreshTime(options) {
            $.ajaxService({
                url: 'http://localhost:1549/Store/Pages/services.aspx?ServiceName=hello-world',
                data:{ oldpassword: $('#oldpassword').val(), newpassword: $('#newpassword').val() },
                onStartService: function () { $(options.target).addClass('loading'); },
                onEndService: function () { $(options.target).removeClass('loading'); },
                onResponse: function (response) {
                    if (response.result == '1') {
                        $.pushMessage({ message: 'success changed', messageClass: 'success-message', delay: 3000 });
                    }
                    else {
                        $.pushMessage({ message: 'error in change password', messageClass: 'success-message', delay: 3000 });
                    }
                }
            });
        }


NameValueCollection ResponseResultCollection = new NameValueCollection();

protected void Page_Load(object sender, EventArgs e)
{
    System.Threading.Thread.Sleep(2200);
    string serviceName = this.Request.QueryString["ServiceName"];
    if (!string.IsNullOrEmpty(serviceName))
    {

        switch (serviceName.ToLower().Trim())
        {
            case ("hello-world"):
                string oldpassword = Request["oldpassword"].ToString();//i get null this
                string newpassword = Request["newpassword"].ToString();//and get null this
                try
                {

                    System.Web.Security.MembershipUser usr = System.Web.Security.Membership.GetUser();
                    if (usr.ChangePassword(oldpassword, newpassword))
                        ResponseResultCollection["result"] = "1";
                    else
                        ResponseResultCollection["result"] = "0";
                }
                catch (Exception ex) { Response.Write("An exception occurred: " + Server.HtmlEncode(ex.Message) + ". Please re-enter your values and try again."); }
                break;
        }
    }
    Response.Write(this.GenerateResponseResult());
    Response.End();
}

private string GenerateResponseResult()
{
    string result = "";

    foreach (string key in this.ResponseResultCollection.AllKeys)
    {
        result += string.Format(",\"{0}\":\"{1}\"", key, this.ResponseResultCollection[key]);
    }

    if (!string.IsNullOrEmpty(result))
    {
        result = result.Substring(1);
        result = "{" + result + "}";
    }

    return result.ToString();
}

2 Ответов

Рейтинг:
19

Mehdy Moini

Цитата:
Внутренняя ошибка сервера 500-это очень общий код состояния HTTP. Это означает, что что-то пошло не так на веб-сайте, и веб-сервер не может указать, что именно, таким образом, не в состоянии выполнить запрос, сделанный клиентом. Это не связано с клиентом, и ошибка заключается в запрошенной веб-странице/веб-сайте, который находится на сервере. Этот код состояния можно рассматривать как " всеобъемлющую’ ошибку сервера веб-сервера.



Цитата:
Убедитесь, что внутренний веб-сервер поддерживает какие-то внутренние журналы ошибок, которые дают более подробную информацию о том, что пошло не так, и таким образом помогают в диагностике проблемы. Как правило, он регистрируется в журналах событий Windows на сервере. Таким образом, первое, что нужно сделать при устранении ошибки, - это просмотреть журналы событий Windows на сервере, чтобы найти, что пошло не так.

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

Перейдите в меню Сервис/Свойства обозревателя в вашем IE.
Перейдите на вкладку Дополнительно и снимите флажок “показывать дружественные сообщения об ошибках HTTP”, а затем нажмите кнопку ОК.
Теперь при доступе к той же веб-странице будет отображаться гораздо более значимое сообщение об ошибке разработчика.

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

Вариант №1: HRESULT: 0×80070035 – страница не может быть отображена из-за внутренней ошибки сервера. Это происходит потому, что сервер, на котором выполняется IIS, не может получить доступ к настроенному корневому каталогу запрошенного расположения.

Решение будет заключаться в том, чтобы убедиться, что сервер, на котором работает IIS, может получить доступ к настроенному корневому каталогу запрошенного местоположения.

Вариант #2: HRESULT: 0x800700c1 – страница не может быть отображена из-за внутренней ошибки сервера. Это происходит потому, что сопоставление сценариев недопустимо.

Разрешение состояло бы в том, чтобы убедиться, что отображение сценария указывает на ISAPI.dll файл, который может обработать запрос. Для этого выполните следующие действия:

Нажмите кнопку Пуск, нажмите кнопку Выполнить, введите inetmgr.exe, а затем нажмите кнопку ОК.
В диспетчере IIS разверните узел имя сервера, разверните узел веб-сайты и выберите веб-сайт, который требуется изменить.
В представлении функции дважды щелкните сопоставления обработчиков.
Убедитесь, что сопоставление скрипта указывает на правильный ISAPI.dll файл. (например: файлы .asp должны сопоставляться с %windir%\system32\inetsrv\asp.dll файл)

Вариант № 3: HRESULT: 0x8007007f – есть проблема с ресурсом, который вы ищете, поэтому он не может быть отображен. Это происходит потому, что сопоставление обработчика для запрошенного ресурса указывает на a .dll-файл, который не может обработать запрос.

Разрешение будет заключаться в редактировании сопоставления обработчика для запрошенного ресурса, чтобы указать на него .dll-файл, который может обработать запрос. Для этого выполните следующие действия:

Нажмите кнопку Пуск, нажмите кнопку Выполнить, введите inetmgr.exe, а затем нажмите кнопку ОК.
В диспетчере IIS разверните узел имя сервера, разверните узел веб-сайты и выберите веб-сайт, который требуется изменить.
В представлении функции дважды щелкните сопоставления обработчиков.
Щелкните правой кнопкой мыши сопоставление сценариев, которое требуется изменить, и выберите команду Изменить.
В диалоговом окне изменить карту сценариев введите соответствующий исполняемый файл в поле исполняемый файл и нажмите кнопку ОК.

Вариант № 4: Одна из других возможностей может быть проблемой в размещении веб-приложения. Некоторые проблемы конфигурации безопасности или конфликт из-за нескольких конфигурационных файлов.

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


более подробный:
HTTP 500 – Внутренняя ошибка сервера[^]


SadeqHatami

спасибо за вашу помощь, но это решение не решило мою проблему :(

Mehdy Moini

разве вы не изменили свое сообщение об ошибке?
вы следовали инструкциям?

SadeqHatami

нет моя ошибка не меняется,
да я это делаю :(
я занимался в течение нескольких дней этой проблемой,я был ошеломлен

Mehdy Moini

вызовите свой url-адрес напрямую без ajax и проверьте, связана ли проблема с вашим клиентским кодом или серверным кодом, если ошибка все еще существует , увеличьте масштаб вашего серверного кода

SadeqHatami

я вызываю url напрямую, и url работает,
Интересно,что url в ajax передается в services.cs и получает это, но не может получить значение данных

Mehdy Moini

$('#newpassword').val() , вы уверены в его значении?,
однажды у меня было два элемента с одинаковым идентификатором, и это вызвало ту же проблему.

SadeqHatami

да я уверена,
пожалуйста, посмотрите это:
http://i.cubeupload.com/1NbpFg.png

http://i.cubeupload.com/hOidkl.png

Mehdy Moini

Я нашел вашу ошибку изображения Sadegh jan, я думаю , что если вы уверены в своем значении в клиентском слое, вы должны профилировать его с помощью сниффера и найти, где изменяется значение

SadeqHatami

да, я уверен. ,
пожалуйста, посмотрите это:
http://i.cubeupload.com/1NbpFg.png

http://i.cubeupload.com/hOidkl.png

я использовал StreamReader, но это тоже пусто! :(

Mehdy Moini

профилируйте свои данные с помощью fiddler и найдите, где вы их потеряете:
http://fiddler2.com/get-fiddler

SadeqHatami

спасибо за вашу руку, я нашел проблему

Mehdy Moini

очень хорошо, не могли бы вы рассказать мне о проблеме?

SanSkun

Эй, Садекхатами,я сталкиваюсь с той же проблемой, можете ли вы сказать, что это за проблема и как ее решить. Плзз

SanSkun

Привет Садекхатами, как исправить эту проблему. Я тоже сталкиваюсь с тем же самым здесь.Пожалуйста, дайте мне знать.

bhargavvenkatesh

Привет, я получаю ту же ошибку в своем php-приложении. Есть ли какое-то решение для этого

Member 14373994

Привет, не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера) это моя ошибка, и я не смог ее решить, пожалуйста, помогите мне ......

Рейтинг:
0

Member 13908024

Привет, у меня был похожий результат, но моя проблема была решена просто обновление моих сущностей/добавление того, что нужно моим контроллерам. У одного из них не было хранимой процедуры так это называлось. Надеюсь, это поможет кому-то почесать голову.


Patrice T

5 лет слишком поздно

jstock32

спасибо...вы просто сэкономили мне кучу времени...обновление моих сущностей работало, смывая некоторые поля БД, которые я забыл обновить.