【发布时间】:2013-07-31 07:52:29
【问题描述】:
我有一个像在 SignalR 1.1.2 上运行的应用程序这样的工作聊天,它将被放到负载平衡的服务器上,所以我需要实施一个背板解决方案来同步服务器。
这是一个 ASP.NET MVC4 .NET 4.5 应用程序。使用 SignalR 集线器,而不是持久连接。该应用在客户端使用 AngularJS 来处理 ui 绑定和更新。
我已按照here 中列出的步骤来实现 sql server 背板,并使用了here 中列出的 1.x 到 2.0 迁移中列出的步骤。解决方案已构建,但在点击使用 SignalR 的页面时,“/signalr/hubs”脚本引用返回 500 错误。
这是我到目前为止所采取的步骤列表。
使用 nuget,删除了与 SignalR 1.1.2 相关的所有引用和依赖项。仔细检查 /bin 和 /packages 目录以确保它们不再引用任何旧库。这是在 github issue 上找到的与 2.0 升级相关的评论,该评论说卸载并重新安装 SignalR 是升级的方式。
通过包管理器控制台 (PMC) 安装 SignalR 2.0.0-beta2
Install-Package Microsoft.AspNet.SignalR -Pre使用 PMC
Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre安装 SQL Server 消息传递底板从 Global.asax 中删除了
RouteTable.Routes.MapHubs();在项目的根目录中创建了启动类。
Startup.cs
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
namespace My.NameSpace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
}
在 Web.config 中将
<add key="owin:AppStartup" value="My.NameSpace.Startup, App_Code"/>添加到<appSettings>在 Startup.Configuration() 方法中放置一个断点,并验证它是否被命中并在应用启动时无异常地执行 app.MapHubs
我没有使用持久连接,因此没有包含
app.MapConnection<MyConnection>("/echo");行,也没有遇到任何模棱两可的定义问题。-
聊天应用页面引用了以下库
- jquery-1.8.3.js
- jquery.signalR-2.0.0-beta2.js
<script src='/signalr/hubs'></script>- AngularJS v1.1.5
项目运行时,聊天应用页面找不到
/signalr/hubschrome 开发工具返回
500 Internal Server Error用于网络选项卡上的/signalr/hubs调用。文件系统没有
/signalr/hubs目录
我的下一步是看看我是否可以使用非常基本的集线器创建一个新的解决方案,看看我是否可以让 Signal 2.0 正常工作。如果是这样,我将比较这两种解决方案,看看有什么区别。
有没有人知道我还可以检查或研究什么来使其正常工作?
【问题讨论】:
标签: c# .net asp.net-mvc angularjs signalr