SignalR 2 also works on .NET Core 2 when you scrap inside yourself:
// SignalR checks if it running in a Mono environment and then // disables features like performance counters // .NET Core isn't Mono, but doesn't have the performance counters DLL // Let make .NET Core a Mono var signalRAssembly = typeof(Microsoft.AspNet.SignalR.PersistentConnection).Assembly; // This type is internal var monoUtility = signalRAssembly.GetType("Microsoft.AspNet.SignalR.Infrastructure.MonoUtility"); var field = monoUtility.GetField( "_isRunningMono", BindingFlags.NonPublic | BindingFlags.Static ); field.SetValue(null, new System.Lazy<bool>(() => true));
source share