Using .NET Core RC2. Got SignalR working, but trying to get it returning camelCase properties in JSON.
For APIs I'm using...
services.AddMvc().AddJsonOptions(o => {
o.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
Maybe there's just nothing in place yet for SignalR (after all, it's not even supposed to work yet...), but wondering if anyone's figured it out yet? I've tried a few things like...
services.AddTransient<IContractResolver, CamelCasePropertyNamesContractResolver>();
... but no go.
Anyone got this working yet?
In SignalR 3.0 you can do this with the following statement, as described in the Microsoft Docs
Let me quote the answer of anurse on GitHub:
Since the protocols are pluggable, the options were moved to a different location because you may choose not to use JSON at all. Now you set them in the .AddJsonProtocol extension method in ConfigureServices, like this:
As of the first final alpha release of signalR core (1.0.0-alpha1-final), you can get camel case like the code snippet below natively:
In fact, you can also employ any customized resolver instead of
CamelCasePropertyNamesContractResolver
.Based on this issue from the SignalR Core repository, there is no native way of doing this as of right now, but you can create a custom contract resolver as indicated in this comment on an old SignalR issue.
Since that thread is for SignalR 2.2.0, let's make it work for SignalR Core.
What happens here is that you cannot use the camel case contract resolver for the SignalR internals, because it would break the communication with the client.
So every time we resolve a contract in the
ResolveContract
method we have to check the assembly of the type currently resolved and check wether it is SignalR internal. If not, then we can resolve the contract using camel case.At this point, we need to register this contract resolver in the framework.
Best of luck!