【问题标题】:SignalR Unexpected character encountered while parsing value: <SignalR 解析值时遇到意外字符:<
【发布时间】:2016-01-16 09:08:53
【问题描述】:

我正在使用 WinRT 客户端。当我尝试发送消息时收到此异常。

解析值时遇到意外字符:<.>

当您将对象发送到集线器时,会出现此问题,并且该对象未在集线器上定义。该对象是一个可绑定对象 (ViewModel)。我不想在 web 项目中包含所有属性通知更改内容。

客户代码

return Proxy.Invoke("PlayerUpdate", sessionData);

尝试一个是让集线器接受一个“对象”参数

public async Task PlayerUpdate(string group, object sessionData)
{
 await Clients[group].PlayerUpdate(sessionData);
}

尝试两个是让集线器接受一个 (json) 'string' 参数

public async Task PlayerUpdate(string group, string sessionData)
{
 await Clients[group].PlayerUpdate(sessionData);
}

尝试三是预序列化对象客户端

var str = JsonConvert.SerializeObject(refresh);
return Proxy.Invoke("PlayerUpdate", str);

没有任何工作。方案 4 是在共享库中定义一些数据传输对象进行发送。我真的不想这样做,因为它会使我的代码加倍。

【问题讨论】:

    标签: json asp.net-mvc-4 windows-runtime signalr


    【解决方案1】:

    解决了。

    我的 repo 项目很好,所以我得出的结论是其他问题。

    经过一些实验,我发现真正的问题是我的 HUB 方法中的参数不正确。简而言之,当我的集线器方法只接受 1 个参数时,我发送了 2 个参数。

    感谢您的关注,很抱歉造成混乱。也许需要更好的异常消息?

    【讨论】:

      【解决方案2】:

      这似乎是 SignalR 的内部错误,我认为没有人能够在 StackOverflow 上为您提供帮助。你应该file an issue with the SignalR GitHub project。

      【讨论】:

        【解决方案3】:

        仅当站点 URL 包含尾随 Default.aspx 时,我的客户才会收到此异常。下面清理了HubConnection URL参数:

        string serverUri = new Uri(HtmlPage.Document.DocumentUri, ".").ToString();
        HubConnection connection = new HubConnection(serverUri, true);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-10
          • 2014-06-09
          • 2016-02-24
          • 1970-01-01
          • 1970-01-01
          • 2017-08-30
          • 1970-01-01
          • 2020-05-09
          相关资源
          最近更新 更多