У меня есть веб-приложение .Net MVC, и я использую SignalR для реализации функции индикатора выполнения. У меня есть представление, которое выполняет Ajax POST для действия с использованием JQuery:$.ajax({
url: actionUrl,
type: 'POST',
data: { ids: ids },
success: function (data) {
...
}
});
Контроллер обрабатывает информацию внутри цикла, и каждая n итерация отправляет сообщение с помощью signalr на концентратор. Клиент подключается к концентратору и обновляет индикатор выполнения с информацией в сообщениях.
Я открываю соединение с концентратором сигналов с помощью этого кода:var connection = new HubConnection("http://localhost/");
connection.Credentials = CredentialCache.DefaultNetworkCredentials;
this.proxy = connection.CreateHubProxy("progressHub");
connection.Start().Wait();
И затем отправляю информацию с помощью этого:proxy.Invoke("ProgressChanged", taskId, progress);
Это работает правильно для первых двух обновлений, но с этого момента оно больше не работает до конца длительного процесса, когда я получаю все оставшиеся сообщения. Я получаю что-то вроде этого:
0% завершено
5% завершено
... (долгая пауза по мере завершения процесса)
10%, 15%, 20%, 25% и т. д. (все эти сообщения объединяются)
Это всегда первые два сообщения, а не случайное количество сообщений.
Знаете ли вы какую-либо конфигурацию, которую я могу упустить?
Я пытался добавить сон после каждого сообщения, сделать действие асинхронным и добавить .Wait( ) к каждому сообщению, но это всегда одно и то же.
Я попробовал это в IISExpress и полной версии IIS 8.