From bff2060454fc15d8633839714c14388757908833 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 18 May 2018 19:55:53 +1200 Subject: [PATCH] Fix JsonHubProtocol error message when too many arguments (#2312) --- .../Protocol/JsonHubProtocol.cs | 4 ++++ .../Internal/Protocol/JsonHubProtocolTests.cs | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs b/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs index a84f3ce901..225bf6337e 100644 --- a/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs +++ b/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs @@ -630,6 +630,10 @@ namespace Microsoft.AspNetCore.SignalR.Protocol // Set all known arguments arguments[paramIndex] = PayloadSerializer.Deserialize(reader, paramTypes[paramIndex]); } + else + { + reader.Skip(); + } argumentsCount++; paramIndex++; diff --git a/test/Microsoft.AspNetCore.SignalR.Common.Tests/Internal/Protocol/JsonHubProtocolTests.cs b/test/Microsoft.AspNetCore.SignalR.Common.Tests/Internal/Protocol/JsonHubProtocolTests.cs index c30209ccce..de764aed24 100644 --- a/test/Microsoft.AspNetCore.SignalR.Common.Tests/Internal/Protocol/JsonHubProtocolTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Common.Tests/Internal/Protocol/JsonHubProtocolTests.cs @@ -248,6 +248,8 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol [InlineData("{'type':1,'invocationId':'42','arguments':[ 'abc', 'xyz'], 'target':'foo'}", "Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.")] [InlineData("{'type':4,'invocationId':'42','target':'foo','arguments':[]}", "Invocation provides 0 argument(s) but target expects 2.")] [InlineData("{'type':4,'invocationId':'42','target':'foo','arguments':[ 'abc', 'xyz']}", "Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.")] + [InlineData("{'type':1,'invocationId':'42','target':'foo','arguments':[1,'',{'1':1,'2':2}]}", "Invocation provides 3 argument(s) but target expects 2.")] + [InlineData("{'type':1,'arguments':[1,'',{'1':1,'2':2}]},'invocationId':'42','target':'foo'", "Invocation provides 3 argument(s) but target expects 2.")] public void ArgumentBindingErrors(string input, string expectedMessage) { input = Frame(input);