【问题标题】:Invoking hub method from signalr .net client throws exception从 signalr .net 客户端调用集线器方法引发异常
【发布时间】:2014-05-17 13:55:07
【问题描述】:

我一直在尝试从信号器 .Net 客户端调用集线器上的方法,但它会引发以下异常:

[ArgumentNullException: Value cannot be null.
Parameter name: s]
   System.IO.StringReader..ctor(String s) +10894409
   Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Parse(JsonSerializer serializer, String json) +63
   Microsoft.AspNet.SignalR.Hubs.HubRequestParser.Parse(String data, JsonSerializer serializer) +19
   Microsoft.AspNet.SignalR.Hubs.HubDispatcher.OnReceived(IRequest request, String connectionId, String data) +40
   Microsoft.AspNet.SignalR.<>c__DisplayClassc.<ProcessRequest>b__7() +34
   Microsoft.AspNet.SignalR.TaskAsyncHelper.FromMethod(Func`1 func) +28
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   Microsoft.AspNet.SignalR.Transports.<ProcessSendRequest>d__10.MoveNext() +364
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   Microsoft.Owin.Mapping.<Invoke>d__0.MoveNext() +386
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar) +69
   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar) +64
   System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +415
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

这是当我尝试在远程主机上调用该方法时,奇怪的是在开发它时它实际上在本地工作......

这里是集线器的代码:

public void UpdateLocalPlayerName(string name)
{
    ...

    foreach (var connection in websiteConnections)
    {
        Clients.Client(connection.ConnectionID).UpdateLocalPlayerName(Context.ConnectionId, name);
    }
}

这是我尝试使用 .Net 客户端调用它的方式

public void UpdateLocalPlayerName(string name)
{
    MainHubProxy.Invoke<string>("UpdateLocalPlayerName", name);
}

我使用的是2.0.3.0版本的.Net客户端,服务器运行IIS8...

知道是什么原因造成的吗?

【问题讨论】:

  • 您在客户端传递的变量“名称”可能为空
  • 很确定不是,因为它在本地工作。
  • 这不是你的情况,但我遇到了同样的问题,在我的情况下,异常是由使用 HTTP 连接时代理服务器中的重定向引起的。切换到 HTTPS,它就像一个魅力!

标签: c# asp.net asp.net-mvc-4 signalr signalr.client


【解决方案1】:

似乎是我有 www。在我连接到的服务器 url 前面,猜测路由阻止了参数正确传递。把url改成不带www的url就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多