diff options
author | Brennan Conroy <brecon@microsoft.com> | 2022-08-05 03:49:19 +0300 |
---|---|---|
committer | Brennan Conroy <brecon@microsoft.com> | 2022-08-05 03:49:19 +0300 |
commit | 56b5b1daee634f5d63f481b1abcb572b4b014fa2 (patch) | |
tree | 786ca20f685148f4116b4c66cb2525e52e1c3d69 | |
parent | a0eb3cd9cf6fd4be77392652a304502e71e06dad (diff) |
3 files changed, 5 insertions, 8 deletions
diff --git a/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs b/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs index 24d640645a..6308a15124 100644 --- a/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs +++ b/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs @@ -110,9 +110,6 @@ internal sealed partial class DefaultHubDispatcher<THub> : HubDispatcher<THub> w { InitializeHub(hub, connection); - // OnDisonnectedAsync is being called, we don't want to allow client results to be used (ISingleClientProxy.InvokeAsync) - connection.HubCallerClients.InvokeAllowed = false; - if (_onDisconnectedMiddleware != null) { var context = new HubLifetimeContext(connection.HubCallerContext, scope.ServiceProvider, hub); diff --git a/src/SignalR/server/Core/src/Internal/HubCallerClients.cs b/src/SignalR/server/Core/src/Internal/HubCallerClients.cs index 1d3ed7db29..e2a65ca7d1 100644 --- a/src/SignalR/server/Core/src/Internal/HubCallerClients.cs +++ b/src/SignalR/server/Core/src/Internal/HubCallerClients.cs @@ -10,7 +10,7 @@ internal sealed class HubCallerClients : IHubCallerClients private readonly string[] _currentConnectionId; private readonly bool _parallelEnabled; - // Client results don't work in OnConnectedAsync and OnDisconnectedAsync + // Client results don't work in OnConnectedAsync // This property is set by the hub dispatcher when those methods are being called // so we can prevent users from making blocking client calls by returning a custom ISingleClientProxy instance internal bool InvokeAllowed { get; set; } @@ -129,7 +129,7 @@ internal sealed class HubCallerClients : IHubCallerClients public Task<T> InvokeCoreAsync<T>(string method, object?[] args, CancellationToken cancellationToken = default) { - throw new InvalidOperationException("Client results inside OnConnectedAsync or OnDisconnectedAsync Hub methods are not allowed."); + throw new InvalidOperationException("Client results inside OnConnectedAsync Hub methods are not allowed."); } public Task SendCoreAsync(string method, object?[] args, CancellationToken cancellationToken = default) diff --git a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs index 42c523e1eb..91133c9604 100644 --- a/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs +++ b/src/SignalR/server/SignalR/test/HubConnectionHandlerTests.ClientResult.cs @@ -125,7 +125,7 @@ public partial class HubConnectionHandlerTests // Hub asks client for a result, this is an invocation message with an ID var closeMessage = Assert.IsType<CloseMessage>(await client.ReadAsync().DefaultTimeout()); - Assert.Equal("Connection closed with an error. InvalidOperationException: Client results inside OnConnectedAsync or OnDisconnectedAsync Hub methods are not allowed.", closeMessage.Error); + Assert.Equal("Connection closed with an error. InvalidOperationException: Client results inside OnConnectedAsync Hub methods are not allowed.", closeMessage.Error); } } @@ -156,8 +156,8 @@ public partial class HubConnectionHandlerTests var closeMessage = Assert.IsType<CloseMessage>(await client.ReadAsync().DefaultTimeout()); Assert.Null(closeMessage.Error); - var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => connectionHandlerTask).DefaultTimeout(); - Assert.Equal("Client results inside OnConnectedAsync or OnDisconnectedAsync Hub methods are not allowed.", ex.Message); + var ex = await Assert.ThrowsAsync<IOException>(() => connectionHandlerTask).DefaultTimeout(); + Assert.Equal($"Connection '{client.Connection.ConnectionId}' disconnected.", ex.Message); } } |