我有一个像SignalR 1.1.2上运行的应用程序一样的工作聊天,它将被放到负载平衡的服务器上,所以我需要实现一个背板解决方案同步服务器。/signalr /集线器在升级到SignalR-2.0.0-beta2时未生成
这是一个ASP.NET MVC4 .NET 4.5应用程序。使用SignalR集线器,而不是持久连接。该应用程序利用客户端的AngularJS来处理UI绑定和更新。
我已经按照步骤列出了here来实施sql服务器底板,并使用概述在1.x到2.0迁移概述的步骤here。该解决方案构建,但是当点击使用SignalR的页面时,“/ signalr/hubs”脚本引用返回500错误。
下面是我到目前为止所采取的一系列步骤。
使用nuget删除了与SignalR 1.1.2相关的所有引用和依赖关系。双重检查/ bin和/ packages目录以确保它们不再引用任何旧库。这是关于2.0升级的github issue上的每条评论,其中说卸载和重新安装SignalR是升级的方式。
- 通过包管理器控制台(PMC)
安装SignalR 2.0.0-β2
Install-Package Microsoft.AspNet.SignalR -Pre
安装SQL Server消息使用PMC
Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre
删除
背板RouteTable.Routes.MapHubs();
从Global.asax中在项目的根目录中创建启动类。
Startup.cs
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
namespace My.NameSpace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
}
新增
<add key="owin:AppStartup" value="My.NameSpace.Startup, App_Code"/>
到<appSettings>
内的Web.config将断点在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/hubs
不受聊天应用页面Chrome浏览器开发工具的
/signalr/hubs
呼叫网络选项卡上返回500 Internal Server Error
找到。文件系统不具有
/signalr/hubs
目录
我的下一步是看看我是否可以创建一个非常基本的枢纽新的解决方案,看看我能得到信号2.0工作。如果是这样,我会比较两种解决方案,看看有什么不同。
有没有人有一个想法,我还可以检查或研究得到这个工作?
相关的StackOverflow问题给出了类似的问题:one,two
你救了我的一天! – Christopher
奇怪的是我的选项已经设置为IIS Express(Visual Studio 2013)。我如何得到这个工作是将选项更改为外部主机,然后恢复到IIS Express并运行。 – Dev