繁体   English   中英

将null参数传递给SignalR客户端代理时,“值不能为空”

[英]“Value cannot be null” when passing null arguments to SignalR client-side proxy

使用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)中的一个错误,因为它不应该尝试序列化一个空对象?

您可以尝试覆盖SignalR hubs调用方法,例如:自定义Microsoft.AspNet.SignalR.AuthorizeAttribute如下所示:

public override bool AuthorizeHubMethodInvocation(IHubIncomingInvokerContext hubIncomingInvokerContext, bool appliesToMethod)
{

}

然后在调用之前,您可以检查您的请求并在需要时进行一些处理。

事实证明这是已经修复的SignalR中的已知错误,将包含在即将发布的2.2.1版本中。 在这里看到他们的票。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM