ppo*_*ani 4 c# json json.net signalr
我正在开发一个项目,我们有两个应用程序; 第一个是填充数据库的控制台应用程序,第二个是自托管的signalR服务,它广播对数据库内容发生的任何更改.
控制台应用程序发送已更改的模型,服务将其发布给所有感兴趣的各方.但是当模型具有循环依赖性时存在问题.我试着这样做:
var config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)
但它似乎没有任何改变; 它仍会抛出异常检测到属性的自引用循环
是否有任何简单的方法可以全局设置ReferenceLoopHandling并使其对转换器所作用的任何模型产生影响?
使用SignalR 2,您可以使用DepandyResolver替换Json.Net序列化程序.要解决我的应用中的参考循环问题,我使用了以下内容:
protected void Application_Start()
{
var serializerSettings = new JsonSerializerSettings();
serializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
serializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
var serializer = JsonSerializer.Create(serializerSettings);
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => serializer);
}
Run Code Online (Sandbox Code Playgroud)
如果您在客户端上使用hubProxy,则需要类似的设置:
hubProxy.JsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
hubProxy.JsonSerializer.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
Run Code Online (Sandbox Code Playgroud)