【问题标题】:SignalR communication between different .net platforms不同 .net 平台之间的 SignalR 通信
【发布时间】:2017-10-30 13:14:44
【问题描述】:

我目前有一个运行 .NET 4.6.1 的 WCF 项目和一个运行 Web 服务和 Angular 2 应用程序的 .NET Core 项目。当尝试使用 HubConnection 类引用 AspNetCore.SignarlR 项目(来自 WCF 项目)时,当连接启动时,我总是收到错误消息:

解析值时遇到意外字符:

Angular 应用已成功使用 SignalR 服务进行聊天演示。我确实以正确的顺序定义了我的路由,并且我跨项目的集线器的名称也经过了双重检查。

我收到的错误是否与我使用 SignalR 库的两种不同实现有关?如果是这样,有没有办法解决这个问题?

【问题讨论】:

    标签: c# angularjs signalr signalr-hub asp.net-core-signalr


    【解决方案1】:

    SignalR 的 ASP.NET Core 版本与之前的版本不兼容。请注意,客户端以 netstandard 为目标,因此您应该可以在项目中使用 SignalR 的 ASP.NET Core 版本中的 .NET 客户端。

    话虽如此 - 我认为您还没有遇到版本不兼容问题。错误消息抱怨字符 < 告诉我服务器正在提供 XML 或 HTML(可能是错误),而客户端(旧的或新的)在第一个响应中期望 JSON。您需要先检查服务器返回的响应是什么,以了解发生了什么。

    【讨论】:

    • 谢谢,是的,你是对的,它返回的是 HTML 文档。有趣的是,如果我向localhost:50114/myhub 创建服务器端 Web 请求,它会成功返回带有连接 ID 的有效 json 响应。如果我使用 HubConnection("localhost:50114/myhub", false);方法,连接ID始终为空
    • HTML 中有什么?您是在本地运行 IIS 还是仅使用 Kestrel?也许是 IIS 配置错误?
    • 我终于设法看到客户正在拨打电话,其中包含各种不同的查询字符串参数,其中包括有关协商的内容。 Angular 应用程序进行了不包含此参数的调用,因此管道正确处理了它。我假设 URL 与信号器的 aspnetcore 版本不匹配。返回的 HTML 只是 Angular 应用程序的默认页面。目前我已经接受这种方法可能不是目前最好的方法。
    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2015-02-09
    • 2019-06-07
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多