"Значение не может быть null" при передаче нулевых аргументов прокси-серверу SignalR на стороне клиента
использование SignalR (v2.0.2) я получаю это исключение:
Value cannot be null.
Parameter name: o
at Newtonsoft.Json.Utilities.ValidationUtils.ArgumentNotNull(Object value, String parameterName)
at Newtonsoft.Json.Linq.JToken.FromObjectInternal(Object o, JsonSerializer jsonSerializer)
at Newtonsoft.Json.Linq.JToken.FromObject(Object o, JsonSerializer jsonSerializer)
at Microsoft.AspNet.SignalR.Client.Hubs.HubProxy.Invoke[T](String method, Object[] args)
Я вызываю HubProxy с отражением, и я передаю некоторые нулевые аргументы, которые вызывают эту ошибку (ака, некоторые элементы в Object[] args
имеют значение null). Однако передача null для аргумента методу является совершенно законной вещью. Это ошибка в SignalR в том, что он пытается сериализовать нулевые параметры или это ошибка в Json.NET (v6.0.1) в том, что он не должен пытаться сериализовать null объект?
2 ответов
оказывается, это известная ошибка в SignalR, которая была исправлена и будет включена в предстоящий выпуск 2.2.1. Смотрите их билет здесь.
вы можете попробовать переопределить SignalR
метод вызова концентраторов, например:
настроить Microsoft.AspNet.SignalR.AuthorizeAttribute
такой:
public override bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool appliesToMethod)
{
}
затем перед вызовом вы можете проверить свой запрос и при необходимости выполнить некоторую обработку.