Я создал концентратор SignalR в веб-приложении и отправляю сообщение в веб-приложение через SignalR из оконного сервиса.он работает нормально, когда больше нет сообщений для отправки в веб-приложение через оконную службу, но иногда в моей оконной службе мы отправляли несколько широковещательных сообщений клиенту через концентратор сигналов, в то время как мы получили сообщение об ошибке.
: InnerExceptions : System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]
Message : One or more errors occurred.
Data : System.Collections.ListDictionaryInternal
InnerException : System.Net.WebException: The remote server returned an error: (503) Server Unavailable.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at Microsoft.AspNet.SignalR.Client.Http.HttpHelper.<>c__DisplayClass2.<GetHttpResponseAsync>b__0(IAsyncResult ar)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) TargetSite : Void ThrowIfExceptional(Boolean)
StackTrace : at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
Ниже приведен код моей оконной службы, который используется для отправки сообщения в веб-приложение с помощью концентратора SignalR.
try
{
HubConnection conn = new HubConnection("http://localhost:8080/");
IHubProxy hub = conn.CreateHubProxy("MyHub");
string jsonObject = string.Empty;
var v = new { ID = 1, IsCompleted = true };
jsonObject = JsonConvert.SerializeObject(v);
conn.Start().Wait(); // *this is where I get the error
hub.Invoke("RefreshSummary", jsonObject);
}
catch (Exception Ex)
{
}
Ниже приведен код в веб-приложении для отправки сообщения клиенту
public class MyHub: Hub
{
public void RefreshSummary(string message)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.refreshSummary(message);
}
}
Мой оконный сервис считывал записи из базы данных, находящейся в очереди, и обрабатывал ее.иногда очередь записей содержит от 3000 до 4000 записей одновременно, и за это время я получил это сообщение об ошибке с кодом " conn.Start (). Wait (); ".после обработки одной записи из очереди уведомите веб-приложение через концентратор SignalR.Пожалуйста, помогите мне решить эту проблему.
Я использовал Visual Studio 2010, MVC 4, .Net Framework 4.0 и SignalR V1.2.2