SignalR 2.0.0 / JsonSerializerSettings:已超过读者的MaxDepth 20

时间:2014-02-25 06:19:45

标签: signalr

使用 SignalR 2.0.0 向服务器发送消息时收到以下错误:

  

SignalR:读者的MaxDepth已超过20。

我正在使用Unity for DI并尝试注册JsonSerializer的实例:

GlobalHost.DependencyResolver.Register(
    typeof (JsonSerializer),
    () => JsonSerializer.Create(
         new JsonSerializerSettings
         {
             ContractResolver = new DefaultContractResolver(),
             MaxDepth = int.MaxValue
         }));

我有事件试过这个:

object IDependencyResolver.GetService(Type serviceType)
{
    var result = _container.IsRegistered(serviceType) ? _container.Resolve(serviceType) : base.GetService(serviceType);

    if (result != null && result.GetType().FullName.Equals("Newtonsoft.Json.JsonSerializer", StringComparison.OrdinalIgnoreCase))
    {
        ((Newtonsoft.Json.JsonSerializer) result).MaxDepth = int.MaxValue;
    }

    return result;
}

错误不会消失。就像SignalR只是使用JsonSerializer的另一个实例一样。

1 个答案:

答案 0 :(得分:1)

我在GitHub上记录了以下问题:

https://github.com/SignalR/SignalR/issues/2911

好像这是一个已知的问题所以我们的解决方案就是用一个Web-Api Ajax POST替换将我们的消息推送到后端的SignalR位。