升级到SignalR-2.0.0-beta2时未生成/ signalr / hubs
我有一个像SignalR 1.1.2上运行的应用程序的工作聊天,它将被放到负载平衡的服务器上,所以我需要实现一个背板解决方案来同步服务器。
这是一个ASP.NET MVC4 .NET 4.5应用程序。 使用SignalR Hub ,而不是持久连接。 该应用程序利用客户端的AngularJS来处理ui绑定和更新。
我按照此处列出的步骤实现了sql server背板,并使用了此处概述的1.x到2.0迁移中概述的步骤。 解决方案构建,但是当点击使用SignalR的页面时,“/ signalr / hubs”脚本引用返回500错误。
这是我到目前为止所采取的步骤列表。
-
使用nuget,删除了与SignalR 1.1.2相关的所有引用和依赖项。 双重检查/ bin和/ packages目录以确保它们不再引用任何旧库。 这是关于2.0升级的github 问题上发现的评论,表示卸载和重新安装SignalR是升级的方法。
-
通过软件包管理器控制台(PMC)
Install-Package Microsoft.AspNet.SignalR -Pre
SignalR 2.0.0-beta2Install-Package Microsoft.AspNet.SignalR -Pre
-
使用PMC
Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre
安装的SQL Server消息传递背板 -
删除了
RouteTable.Routes.MapHubs();
来自Global.asax -
在项目的根目录中创建了Startup类。
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
到
-
在Startup.Configuration()方法中放置一个断点,并在应用程序启动时validation它是否被命中并执行app.MapHubs而没有exception
-
我没有使用Persistent Connection,因此没有包含
app.MapConnection("/echo");
并没有得到任何含糊不清的定义问题。 -
聊天应用页面引用了以下库
- jQuery的1.8.3.js
- jquery.signalR-2.0.0-beta2.js
-
- AngularJS v1.1.5
-
项目运行时,聊天应用页面找不到
/signalr/hubs
-
chrome dev工具在网络选项卡上为
/signalr/hubs
调用返回500 Internal Server Error
。 -
文件系统没有
/signalr/hubs
目录
我的下一步是看看我是否可以使用一个非常基本的集线器创建一个新的解决方案,看看我是否可以使Signal 2.0工作。 如果确实如此,我将比较两种解决方案,看看它们之间的区别。
有没有人知道我还能检查或研究什么才能使这个工作?
相关的StackOverflow问题有类似的问题: 一 , 二
事实certificate,通过更改项目配置以使用本地IIS Web服务器而不是Visual Studio Developer Server(Cassini)来解决问题。
通过在我的浏览器中转到/signalr/hubs
url并查看服务器错误来找到原因
System.PlatformNotSupportedException: This operation requires IIS integrated pipeline mode.
一些谷歌搜索出现在这个页面上 ,表示该错误是由ASP.NET Development Server不支持集成管道模式引起的。
您可以通过右键单击项目来更改使用的服务器,选择属性,单击Web选项卡,然后在服务器部分下选择“使用本地IIS Web服务器”。
在我的情况下,IIS未正确安装。 我只需要重新安装它:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i