SignalR/SignalR · error · ArgumentNullException
descriptor
Error message
descriptor
What it means
Thrown by DefaultParameterResolver.ResolveParameter when the ParameterDescriptor argument is null. This is an internal guard within the hub method invocation pipeline. The framework always supplies valid descriptors during normal operation, so this only fires from custom IParameterResolver implementations or direct API calls.
Source
Thrown at src/Microsoft.AspNet.SignalR.Core/Hubs/Lookup/DefaultParameterResolver.cs:23
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.SignalR.Json;
namespace Microsoft.AspNet.SignalR.Hubs
{
public class DefaultParameterResolver : IParameterResolver
{
/// <summary>
/// Resolves a parameter value based on the provided object.
/// </summary>
/// <param name="descriptor">Parameter descriptor.</param>
/// <param name="value">Value to resolve the parameter value from.</param>
/// <returns>The parameter value.</returns>
public virtual object ResolveParameter(ParameterDescriptor descriptor, IJsonValue value)
{
if (descriptor == null)
{
throw new ArgumentNullException("descriptor");
}
if (value == null)
{
throw new ArgumentNullException("value");
}
if (value.GetType() == descriptor.ParameterType)
{
return value;
}
return value.ConvertTo(descriptor.ParameterType);
}
/// <summary>
/// Resolves method parameter values based on provided objects.
/// </summary>View on GitHub (pinned to 693053b89a)
Solutions
- Ensure a valid ParameterDescriptor is resolved before calling ResolveParameter
- If implementing a custom IParameterResolver, guard against null descriptors in your lookup logic
- In tests, construct a valid ParameterDescriptor before calling the method
Defensive patterns
Strategy: validation
Validate before calling
if (descriptor == null)
throw new ArgumentNullException(nameof(descriptor));
resolver.ResolveParameter(descriptor, value); Prevention
- Always verify ParameterDescriptor is non-null before calling ResolveParameter
- In custom IParameterResolver implementations, guard all descriptor lookups against null
- Avoid calling the internal parameter resolution API directly from application code
When it happens
Trigger: Calling ResolveParameter(null, value) directly, or a custom IParameterResolver implementation that passes null for the descriptor during parameter resolution.
Common situations: Writing a custom parameter resolver that does not properly look up the ParameterDescriptor; unit tests that exercise the resolver directly.
Related errors
AI-assisted analysis of SignalR/SignalR@693053b89a (2026-08-13).
Data as JSON: /api/errors/a267bbf0e4fe317d.
Report an issue: GitHub.