From c7ebae47ea3569183a27c1edd745d79da7c8f159 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Mon, 11 Jun 2018 13:55:47 -0700 Subject: [PATCH] Show detailed error message for HubExceptions (#2461) --- .../Internal/ErrorMessageHelper.cs | 7 +++--- .../HubConnectionHandlerTestUtils/Hubs.cs | 5 ++++ .../HubConnectionHandlerTests.cs | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/ErrorMessageHelper.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/ErrorMessageHelper.cs index faec5ced4a..edf504f71c 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/ErrorMessageHelper.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/ErrorMessageHelper.cs @@ -9,12 +9,13 @@ namespace Microsoft.AspNetCore.SignalR.Internal { internal static string BuildErrorMessage(string message, Exception exception, bool includeExceptionDetails) { - if (!includeExceptionDetails) + if (exception is HubException || includeExceptionDetails) { - return message; + return $"{message} {exception.GetType().Name}: {exception.Message}"; + } - return message + $" {exception.GetType().Name}: {exception.Message}"; + return message; } } } diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs index 1192a00d72..f2dad3db45 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTestUtils/Hubs.cs @@ -121,6 +121,11 @@ namespace Microsoft.AspNetCore.SignalR.Tests throw new InvalidOperationException("BOOM!"); } + public void ThrowHubException() + { + throw new HubException("This is a hub exception"); + } + public Task MethodThatYieldsFailedTask() { return Task.FromException(new InvalidOperationException("BOOM!")); diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs index 659c543e4f..3e688fc1f3 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs @@ -540,6 +540,30 @@ namespace Microsoft.AspNetCore.SignalR.Tests } } + [Fact] + public async Task DetailedExceptionEvenWhenNotExplicitlySet() + { + var serviceProvider = HubConnectionHandlerTestUtils.CreateServiceProvider(); + + var methodName = nameof(MethodHub.ThrowHubException); + + var connectionHandler = serviceProvider.GetService>(); + + using (var client = new TestClient()) + { + var connectionHandlerTask = await client.ConnectAsync(connectionHandler); + + var message = await client.InvokeAsync(methodName).OrTimeout(); + + Assert.Equal($"An unexpected error occurred invoking '{methodName}' on the server. HubException: This is a hub exception", message.Error); + + // kill the connection + client.Dispose(); + + await connectionHandlerTask.OrTimeout(); + } + } + [Fact] public async Task HubMethodDoesNotSendResultWhenInvocationIsNonBlocking() {