升级 SignalR 1.x 项目到 SignalR 2
警告
本文档不适用于最新版本的 SignalR。 查看 ASP.NET Core SignalR。
本主题介绍如何将现有 SignalR 1.x 项目升级到 SignalR 2.x,以及如何排查升级过程中可能出现的问题。
本教程中使用的软件版本
- Visual Studio 2013
- .NET 4.5
- SignalR 版本 1 和 2
通过本教程使用 Visual Studio 2012
若要在本教程中使用 Visual Studio 2012,请执行以下操作:
- 将 包管理器 更新到最新版本。
- 安装 Web 平台安装程序。
- 在 Web 平台安装程序中,搜索并安装 ASP.NET 和 Web 工具 2013.1 for Visual Studio 2012。 这将为 SignalR 类(例如 Hub)安装 Visual Studio 模板。
- 某些模板 ((如 OWIN 启动类) )将不可用;对于这些,请改用类文件。
问题和评论
请留下反馈,说明你对本教程的喜爱程度,以及我们可以在页面底部的评论中改进的内容。 如果你有与本教程不直接相关的问题,可以将其发布到 ASP.NET SignalR 论坛 或 StackOverflow.com。
SignalR 2 使用 OWIN 跨服务器平台提供一致的开发体验。 本文介绍将 SignalR 1.x 应用程序更新到版本 2 所需的几个步骤。
虽然建议将应用程序升级到 SignalR 2,但仍支持 SignalR 1.x。
本教程介绍如何将 Web 托管的应用程序升级到 SignalR 2。 SignalR 2 现在支持自承载应用程序 (在控制台应用程序、Windows 服务或其他进程) 中托管服务器的自承载应用程序。 有关如何开始使用 SignalR 2 创建自承载应用程序的信息,请参阅 教程:SignalR 自承载。
目录
以下部分介绍升级 SignalR 项目所涉及的任务,以及如何排查可能出现的问题。
示例:将 入门 教程应用程序升级到 SignalR 2
在本部分中,你将更新在 入门 教程的 SignalR 1.x 版本中创建的应用程序,以使用 SignalR 2。
完成入门教程后,右键单击项目,然后选择“属性”。 验证目标框架是否设置为 .NET Framework 4.5。
打开包管理器控制台。 使用以下命令从项目中删除 SignalR 1.x:
Uninstall-Package Microsoft.AspNet.SignalR -RemoveDependencies
使用以下命令安装 SignalR 2:
Install-Package Microsoft.AspNet.SignalR
在 HTML 页中,更新 SignalR 的脚本引用,以匹配项目中现在包含的脚本版本。
<!--Reference the SignalR library. --> <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
在全局应用程序类中,删除对 MapHubs 的调用。
protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapHubs(); }
右键单击解决方案,然后选择“ 添加”、“ 新建项...”。在对话框中,选择“ Owin 启动类”。 将新类命名为 Startup.cs。
将 Startup.cs 的内容替换为以下代码:
using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(SignalRChat.Startup))] namespace SignalRChat { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } } }
程序集属性将 类添加到 Owin 的启动进程,该进程在 Owin 启动时执行
Configuration
方法。 这反过来又调用MapSignalR
方法,该方法为应用程序中的所有 SignalR 中心创建路由。运行项目,并将main页的 URL 复制到另一个浏览器或浏览器窗格中,就像以前一样。 每个页面都将要求提供用户名,并且从每个页面发送的消息应在两个浏览器窗格中可见。
排查升级期间遇到的错误
本部分介绍升级期间可能出现的问题。 有关 SignalR 应用程序可能发生的错误和问题的更全面列表,请参阅 SignalR 故障排除。
“以下方法或属性之间的调用不明确”
如果未删除对 的 Microsoft.AspNet.SignalR.Owin
引用,则会发生此错误。 此包已弃用;必须删除 引用,并且必须卸载 SelfHost 包的 1.x 版本。
中心方法以无提示方式失败
验证客户端中的脚本引用是否为最新,以及 Startup 类的 OwinStartup
属性是否具有项目的正确类和程序集名称。 此外,请尝试在浏览器中打开中心地址 (/signalr/hubs) ;出现的任何错误都将提供有关问题的详细信息。