diff --git a/src/Microsoft.AspNetCore.SignalR/SignalRSocketBuilderExtensions.cs b/src/Microsoft.AspNetCore.SignalR/SignalRSocketBuilderExtensions.cs index 9a5676970b..568ab565fd 100644 --- a/src/Microsoft.AspNetCore.SignalR/SignalRSocketBuilderExtensions.cs +++ b/src/Microsoft.AspNetCore.SignalR/SignalRSocketBuilderExtensions.cs @@ -10,9 +10,9 @@ namespace Microsoft.AspNetCore.SignalR { public static ISocketBuilder UseHub(this ISocketBuilder socketBuilder) where THub : Hub { + var endpoint = socketBuilder.ApplicationServices.GetRequiredService>(); return socketBuilder.Run(connection => { - var endpoint = socketBuilder.ApplicationServices.GetRequiredService>(); return endpoint.OnConnectedAsync(connection); }); } diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/MapSignalRTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/MapSignalRTests.cs new file mode 100644 index 0000000000..aeabb2501a --- /dev/null +++ b/test/Microsoft.AspNetCore.SignalR.Tests/MapSignalRTests.cs @@ -0,0 +1,43 @@ +using System; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace Microsoft.AspNetCore.SignalR.Tests +{ + public class MapSignalRTests + { + [Fact] + public void MapSignalRFailsForInvalidHub() + { + var ex = Assert.Throws(() => + { + var builder = new WebHostBuilder() + .UseKestrel() + .ConfigureServices(services => + { + services.AddSignalR(); + }) + .Configure(app => + { + app.UseSignalR(options => options.MapHub("overloads")); + }) + .Build(); + }); + + Assert.Equal("Duplicate definitions of 'OverloadedMethod'. Overloading is not supported.", ex.Message); + } + + private class InvalidHub : Hub + { + public void OverloadedMethod(int num) + { + } + + public void OverloadedMethod(string message) + { + } + } + } +}