我已经在Web应用程序中创建了SignalR集线器,并通过SignalR从窗口服务向Web应用程序发送了一条消息。当没有更多消息要通过窗口服务发送到Web应用程序时,它工作正常,但有时在我的窗口服务中,我们当时已通过Signalr Hub发送多个广播消息给客户端,我们收到了错误消息。
: 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集线器向Web应用发送消息。
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集线器通知Web应用。请帮我解决这个问题。
我已经使用了Visual Studio 2010,MVC 4,.Net Framework 4.0和SignalR V1.2.2