2015-11-09 3 views
0

Я написал простой веб-сервис в среде ASP.NET-MVC5. Проблема, с которой я столкнулся, - это настраиваемый код состояния и ответное сообщение.Отсутствует ответное сообщение со стороны клиента

Я пробовал много найти ответ здесь, но решение, которое я нашел здесь, не работает для меня.

Я использую стандартный подход try/catch для обработки моих ошибок. Когда блок catch получает ошибку, он отправляет ответ клиенту с пользовательским кодом ошибки и JSON-файлом с дополнительной информацией об ошибке/исключении.

Когда я запускаю свое приложение в службе IIS, он работает нормально, когда я отправляю запросы с того же сервера. Такая же ситуация возникает, когда я запускаю приложение на IIS 7.5 в среде dev и в IIS 8.5 на рабочей среде. Но проблема возникает, когда клиент пытается отправить запрос моему приложению, а в случае ошибки внутри кода приложения клиент получает только страницу с ошибкой по умолчанию с 400 кодом состояния.

Я попытался установить CustomError в различных режимах, а также пробовал различные комбинации с HttpErrors узел и т.д.
Не работает для меня. Если CustomError установлен в режим ON, он перестает работать для меня вообще - даже для местных запросов. Вот как я отправить ответ Клиент:

попробовать

{} улов() {

Response.StatusCode = 406;

StringBuilder errorMessage = new StringBuilder();

// здесь я генерировать файл JSON для отправки с ответом

строкового исключения = errorMessage.ToString();

возвращение Json (исключение, JsonRequestBehavior.AllowGet);

}

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

P.s. В SO я нашел много аналогичного вопроса, но на мой вопрос не было прямого ответа. Основное различие между моим вопросом и вопросами, которые я нашел здесь, были настраиваемыми страницами ошибок. Но для меня было просто отправить json в ответ в случае ошибки/исключения и сделать его видимым в ответе на стороне клиента.

+0

Вы говорите, что не когда есть нет ошибки во время выполнения, клиент получает ответ JSON, как ожидалось? Или это так, клиент всегда получает ошибку 400 - Bad Request. Потому что в этом случае это имеет какое-то отношение к [CORS] (http://stackoverflow.com/questions/7001846/how-to-handle-options-method-in-asp-net-mvc) –

+0

@CORS - Oguz Озгуль Нет, я не это имел в виду. Я отправил плохую просьбу о моем подключении и хотел проверить свою обработку ошибок. Например, есть свойство IsActive, которое может принимать 0 или 1 значения. И в случае, когда клиент отправит другое значение (например, 4) в это свойство, я отправил ответ с настраиваемым кодом состояния и сообщением о том, что это значение неверно. Но когда я отправляю запрос на свое приложение с сервера, на котором установлен этот api, это сообщение отображается, но когда любое другое приложение-клиент отправляет запрос на тот же сервер, он просто получает стандартный неверный запрос без какого-либо сообщения. – 4the3eam

+0

Можете ли вы добавить блок кода, в котором вы устанавливаете код статуса ответа и контент? –

ответ

0

Я думаю, ваша проблема different чем вы думаете ... Я столкнулась с проблемой ранее ... В моем случае это было связано с IIS re-register with asp.net ...

попытка ниже процесса

в command prompt

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis -i

Обязательно запустите в командной строке as administrator

Если до сих пор не решена попытка найти ответ в below thread

Asp.net 4.0 has not been registered

+0

Я зарегистрировал .net 4 после того, как установил его на серверах. До этого мое приложение вообще не работало из-за отсутствия подходящей версии фреймворка, установленного на severs. – 4the3eam

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