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

  1. Ensure a valid ParameterDescriptor is resolved before calling ResolveParameter
  2. If implementing a custom IParameterResolver, guard against null descriptors in your lookup logic
  3. 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

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.