4

我写了一个简单的 SignalR 集线器:

public void PostUpdate(string message)
    {
        try
        {
            var update = URS.Tools.JsonSerializer.DeserializeFromJson<DataUpdate>(message);
            switch (update.UpdateType)
            {
                case DataUpdateType.Opportunity:
                    Clients.All.UpdateOpportunity(update.DataUpdateId);
                    break;
                case DataUpdateType.Contact:
                    Clients.All.UpdateContact(update.DataUpdateId);
                    break;
                case DataUpdateType.Client:
                    Clients.All.UpdateClient(update.DataUpdateId);
                    break;
            }
        }
        catch (Exception exception)
        {
            Logger.LogError(exception);
        }
    }

它与 Silverlight 5 客户端一起运行。在大多数情况下它可以工作,但在 5 - 30 分钟后,我收到了来自库的错误:

Exception information: 
Exception type: FormatException 
Exception message: Invalid cursor.
at Microsoft.AspNet.SignalR.Messaging.Cursor.GetCursors(String cursor, Func`2 keyMaximizer)
at Microsoft.AspNet.SignalR.Messaging.DefaultSubscription..ctor(String identity, IEnumerable`1 eventKeys, TopicLookup topics, String cursor, Func`2 callback, Int32 maxMessages, IStringMinifier stringMinifier, IPerformanceCounterManager counters)
at Microsoft.AspNet.SignalR.Messaging.MessageBus.CreateSubscription(ISubscriber subscriber, String cursor, Func`2 callback, Int32 messageBufferSize)
at Microsoft.AspNet.SignalR.Messaging.MessageBus.Subscribe(ISubscriber subscriber, String cursor, Func`2 callback, Int32 maxMessages)
at Microsoft.AspNet.SignalR.Infrastructure.Connection.Receive(String messageId, Func`2 callback, Int32 maxMessages)
at Microsoft.AspNet.SignalR.Transports.ForeverTransport.ProcessMessages(ITransportConnection connection, Func`1 postReceive, Action`1 endRequest)

当我查看数据包时,我看不出成功错误之前的数据包和失败的调用之间的区别。它正在运行 serverEvents 传输,但我尝试 longPolling 无济于事。

服务器中发生异常。

任何想法可能导致上述错误和/或如何解决它?

4

0 回答 0