我将 SignalR 1.1 与 .NET 客户端一起使用。我的集线器中有一个方法,它接受 BaseMessage 类的对象并将其广播给所有客户端:
public void SendMessage(BaseMessage message)
{
Clients.All.BroadCastMessage(message);
}
客户端将派生消息传递给此方法:
_hub.Invoke("SendMessage", new ErrorMessage("Some Error")).Wait();
客户端有一个消息处理程序:
_hub.On<BaseMessage>("BroadCastMessage", OnMessageReceived);
我在应用程序启动时指定了 TypeNameHandling.All 序列化程序设置:
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All};
var serializer = new JsonNetSerializer(settings);
GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer);
但是当客户端发送派生消息时,服务器会收到基本消息。
我应该如何配置序列化程序才能接收派生消息?
注意:我可以手动进行序列化/反序列化并将字符串传递给服务器,但这会导致双重序列化。