diff --git a/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs b/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs index 4c471386a7..abcafbccb2 100644 --- a/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs +++ b/src/Microsoft.AspNetCore.SignalR.Protocols.Json/Protocol/JsonHubProtocol.cs @@ -585,14 +585,15 @@ namespace Microsoft.AspNetCore.SignalR.Protocol object[] arguments = null; var paramIndex = 0; var argumentsCount = 0; + var paramCount = paramTypes.Count; while (reader.Read()) { if (reader.TokenType == JsonToken.EndArray) { - if (argumentsCount != paramTypes.Count) + if (argumentsCount != paramCount) { - throw new InvalidDataException($"Invocation provides {argumentsCount} argument(s) but target expects {paramTypes.Count}."); + throw new InvalidDataException($"Invocation provides {argumentsCount} argument(s) but target expects {paramCount}."); } return arguments ?? Array.Empty(); @@ -600,12 +601,12 @@ namespace Microsoft.AspNetCore.SignalR.Protocol if (arguments == null) { - arguments = new object[paramTypes.Count]; + arguments = new object[paramCount]; } try { - if (paramIndex < paramTypes.Count) + if (paramIndex < paramCount) { // Set all known arguments arguments[paramIndex] = PayloadSerializer.Deserialize(reader, paramTypes[paramIndex]); @@ -637,21 +638,23 @@ namespace Microsoft.AspNetCore.SignalR.Protocol private object[] BindArguments(JArray args, IReadOnlyList paramTypes) { - if (paramTypes.Count != args.Count) + var paramCount = paramTypes.Count; + var argCount = args.Count; + if (paramCount != argCount) { - throw new InvalidDataException($"Invocation provides {args.Count} argument(s) but target expects {paramTypes.Count}."); + throw new InvalidDataException($"Invocation provides {argCount} argument(s) but target expects {paramCount}."); } - if (paramTypes.Count == 0) + if (paramCount == 0) { return Array.Empty(); } - var arguments = new object[args.Count]; + var arguments = new object[argCount]; try { - for (var i = 0; i < paramTypes.Count; i++) + for (var i = 0; i < paramCount; i++) { var paramType = paramTypes[i]; arguments[i] = args[i].ToObject(paramType, PayloadSerializer);