从signalr .net客户端调用hub方法会引发异常

时间:2014-05-17 13:55:07

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

我一直试图从信号器.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 ...

知道是什么原因引起的吗?

1 个答案:

答案 0 :(得分:0)

似乎我有www。在我连接的服务器URL的前面,猜测路由阻止了参数被正确传递。将网址更改为没有www的网址并且有效。