Я пытаюсь обновить значение на своей странице каждые 5 секунд, используя jQuery $ .ajax, этот код работал нормально, но после развертывания на производственном сервере он представляется случайным сбоем. На некоторых страницах он будет работать, а на других - если с ошибкой: status 0, statusText: «error».
Может ли кто-нибудь обнаружить ошибки в коде/разметке?
Я использую это называть мой метод каждые 5 секунд:
setInterval(function() {
updateMessages();
}, 5000);
updateMessages выглядит следующим образом:
function updateMessages() {
$.ajax({
beforeSend: function() { },
complete: function() { },
type: "GET",
url: '@Url.Action("GetUnreadMessagesJson", "Message", new { Area = "" })',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var newUnreadMessages = result.UnreadMsgCount;
},
error: function (rsult) {
console.log(rsult);
}
});
}
Мой код сервера (Действие) внутри контроллера MVC выглядит следующим образом:
public ActionResult GetUnreadMessagesJson() {
int unreadMessages = 0;
try {
unreadMessages = messageService.GetUnreadMessageCount(WebSecurity.CurrentUserId);
}
catch (Exception) {
throw;
}
return Json(new {
UnreadMsgCount = unreadMessages
//,UnreadMessages = unreadMessages
}, JsonRequestBehavior.AllowGet);
}
Когда я использую Fiddler2 для анализа запроса на моем локальном компьютере, я вижу это в ответ:
HTTP/1.1 200 OK Cache-Control: private Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNetMvc-Version: 4.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 31 Jul 2013 17:38:50 GMT Content-Length: 20
{ «UnreadMsgCount»: 3}
Что хорошо выглядит и то, что я ожидал, но я никогда не видел этот запрос, когда сайт находится под напряжением. Fiddler2 никогда не показывает никакого исходящего запрос Ajax, консоль Google Chrome показывает:
Object {readyState: 0, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
Который имеет статус: 0 и его статус: "ошибка" внутри. Больше ничего.
Как я могу рассказать об этой проблеме, если нет ничего плохого в моем коде? Кто-нибудь видел это раньше?
EDIT
После тестирования этого вопроса с несколькими браузерами, включая IE, Firefox и Safari кажется, что проблема ограничивается только Google Chrome. Я отправил отчет об ошибке here и обновит эту запись любым ответом, который я получаю.
Спасибо,
Я также должен добавить на сайт в реальном времени. У меня есть фильтр для перенаправления HTTP-запросов на HTTPS. Я временно отключил это, но он не влияет на результаты. – Leigh
есть ли разница в отображаемом URL? @url.Action («GetUnreadMessagesJson», «Message», new {Area = ""}) – Nenad
@Nenad нет, при просмотре источника в моем браузере я вижу: url: '/ Message/GetUnreadMessagesJson' - который я скопировал и вставил в браузер адресная строка: www.domain.com/Message/GetUnreadMessagesJson - Я получаю ожидаемый результат - массив JSON, содержащий «UnreadMsgCount» – Leigh