Приложение MVC3 перенесено из IIS 6 в IIS 7.5 - отличается значение ответа Ajax?

0

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

[HttpGet]
[NoCache]
public JsonResult Search(SearchCriteriaModel search)
{
    var searchResults = Searcher.PerformSearch(search); 

    //searchResults == null
    return Json(searchResults, JsonRequestBehavior.AllowGet);
}

Это вызывается с помощью jQuery:

$.ajax({
    url: "the url",
    type: "GET",
    data: {search criteria},
    success: function(response) {
        /*
            in iis6 'response' === ''
            in iis7.7 'response' === null, causing an error later
    */
    }
});

В ii6 ответ представляет собой пустую строку. В iis7.5 ответ является null.

Почему сценарий видит разницу?

а также

Как настроить iis7.5 так, чтобы скрипт увидел пустой ответ строки и продолжает работать правильно?

Дополнительно - веб-сервер визуальной студии также возвращает пустую строку. Точная настройка папки в качестве приложения IIS7.5 возвращает значение null.

Ответ с веб-сервера визуальной студии с пустым значением строки:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 10 Mar 2014 19:22:29 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Length: 0
Connection: Close

Ответ от IIS7.5 с нулевым значением:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 10 Mar 2014 19:22:32 GMT
Content-Length: 0
  • 1
    У меня есть ощущение, что это связано с заголовком Content-Type: application/json который сейчас отправляется. Так что теперь пустой ответ превращается в пустой объект javascript вместо пустой строки. Какую версию jQuery вы используете?
  • 0
    @ StevenV Я согласен, что так и должно быть. У меня работает 1.7.2, приложение немного старше.
Показать ещё 1 комментарий
Теги:
asp.net-mvc
iis-7.5
iis-6

1 ответ

0
Лучший ответ

Переключите пул приложений с ASP.NET v4.0 на ASP.NET v4.0 Classic и Content-Type больше не будет отправлен:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
X-Powered-By: ASP.NET
Date: Mon, 10 Mar 2014 19:37:28 GMT

Ещё вопросы

Сообщество Overcoder
Наверх
Меню