使用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)中的一个错误,因为它不应该尝试序列化一个空对象?
答案 0 :(得分:0)
您可以尝试覆盖SignalR
集线器调用方法,例如:
像这样自定义Microsoft.AspNet.SignalR.AuthorizeAttribute
:
public override bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool appliesToMethod)
{
}
然后在调用之前,您可以检查您的请求并在需要时进行一些处理。
答案 1 :(得分:0)
原来这是SignalR中的一个已知错误,已经修复并将包含在即将发布的2.2.1版本中。查看他们的机票here。