使用 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的另一个实例一样。
答案 0 :(得分:1)
我在GitHub上记录了以下问题:
https://github.com/SignalR/SignalR/issues/2911
好像这是一个已知的问题所以我们的解决方案就是用一个Web-Api Ajax POST替换将我们的消息推送到后端的SignalR位。