4

I am using SignalR 1.1 with .NET clients. I have a single method in my hub that accepts an object of BaseMessage class and broadcasts it to all clients:

public void SendMessage(BaseMessage message)
{
    Clients.All.BroadCastMessage(message);
}

Clients will pass derived messages into this method:

_hub.Invoke("SendMessage", new ErrorMessage("Some Error")).Wait();

The client has a single message handler:

_hub.On<BaseMessage>("BroadCastMessage", OnMessageReceived);

I've specified TypeNameHandling.All serializer settings at application startup:

var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All};
var serializer = new JsonNetSerializer(settings);
GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer), () => serializer);

But when the client sends a derived message, the server receives a base message.

How should I configure serializer to be able to receive derived messages?

Note: I can do serialization/deserialization manually and pass strings to the server, but this causes double serialization.

4

1 に答える 1