SignalRコアリポジトリのthis issueに基づいて、今のところこれを行う方法はありませんが、this comment on an old SignalR issueのようにカスタムコントラクトリゾルバを作成できます。
そのスレッドがSignalR 2.2.0用ですので、のは、それがSignalRコアのために働くにしましょう。ここでは何が起こる
using System;
using System.Reflection;
using Microsoft.AspNetCore.SignalR.Infrastructure;
using Newtonsoft.Json.Serialization;
public class SignalRContractResolver : IContractResolver
{
private readonly Assembly _assembly;
private readonly IContractResolver _camelCaseContractResolver;
private readonly IContractResolver _defaultContractSerializer;
public SignalRContractResolver()
{
_defaultContractSerializer = new DefaultContractResolver();
_camelCaseContractResolver = new CamelCasePropertyNamesContractResolver();
_assembly = typeof(Connection).GetTypeInfo().Assembly;
}
public JsonContract ResolveContract(Type type)
{
if (type.GetTypeInfo().Assembly.Equals(_assembly))
return _defaultContractSerializer.ResolveContract(type);
return _camelCaseContractResolver.ResolveContract(type);
}
}
は、クライアントとの通信を壊すので、あなたは、SignalRの内部のためのキャメルケース契約リゾルバを使用することができないということです。
ResolveContract
メソッドで契約を解決するたびに、現在解決されているタイプのアセンブリをチェックして、それがSignalR internalであることを確認する必要があります。もしそうでなければ、私たちはラクダのケースを使って契約を解決することができます。この時点で
は、我々は枠組みの中で、この契約リゾルバを登録する必要があります。
public void ConfigureServices(IServiceCollection services)
{
var settings = new JsonSerializerSettings();
settings.ContractResolver = new SignalRContractResolver();
var serializer = JsonSerializer.Create(settings);
services.Add(new ServiceDescriptor(typeof(JsonSerializer),
provider => serializer,
ServiceLifetime.Transient));
// register other services like SignalR, MVC and custom services
}
これらの質問と回答は.net 4.5/4.6ではなく、コアです。 – PersonThing