How to set Json Serializer Settings in SignalR2?

asp.net, asp.net-web-api, inversion-of-control, json, signalr

Solution

Have you seen my discussion at the end of this issue?

https://github.com/SignalR/SignalR/issues/500#issuecomment-27480715

The problem is that `kernel.TryGet(serviceType)` will not return null but a default instance since singalR is now usign a concrete type and Ninject will not fail on instancing a unregistered concrete type.

You can check if the concrete type has an explicit binding in the Kernel, if not use the value in the SignalR Dep.resolver

kernel.GetBindings(serviceType).Any();

Problem

I am using Signalr 2, Webapi 2 and Ninject for Ioc and I am in trouble. In SignalR 2.0 you can't replace the JsonSerializer. As been answered in here: SignalR 2.0.0 beta2 IJsonSerializer extensibility I need to ignore ReferenceLoopHandling in json, so I used this code: ``` var serializerSettings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }; GlobalHost.DependencyResolver.Register(typeof(JsonSerializer), () => JsonSerializer.Create(serializerSettings)); ``` It all works fine, but I also call signalR clients from Webapi and calling will not work unless I set this code in app start: ``` GlobalHost.DependencyResolver = new NinjectSignalRDependencyResolver(NinjectIocConfig.Kernel); ``` Calling signalR clients from webapi now works but the JSON serialization settings are not used anymore. How I can get around this or what am I doing wrong? Thanks in advance

Original source

Related problems