2014-02-25 15 views
3

使用SignalR 2.0.0將消息發送到服務器時,我收到以下錯誤:SignalR 2.0.0/JsonSerializerSettings:20的讀者的MAXDEPTH已超過

SignalR:讀者的MAXDEPTH已超過20個。

我使用統一的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

我登錄GitHub上的以下問題:

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

這好像它是一個已知的問題,所以我們的解決辦法是更換SignalR位是推動我們的消息,我們的後端與Web-Api Ajax POST。