当前位置: 首页 > 面试题库 >

升级到SignalR-2.0.0-beta2时不会生成/ signalr / hub

龚寂弦
2023-03-14
问题内容

我有一个像在SignalR 1.1.2上运行的应用程序那样的正常聊天,它将被放置在负载平衡的服务器上,因此我需要实现一个底板解决方案来同步服务器。

这是一个ASP.NET MVC4 .NET 4.5应用程序。使用 SignalR集线器
,而不是持久连接。该应用程序在客户端利用AngularJS来处理ui绑定和更新。

我已经按照此处列出的步骤来实现sql服务器背板,并使用了此处概述的从1.x到2.0迁移中概述的步骤。该解决方案可以构建,但是当点击使用SignalR的页面时,“ / signalr /
hubs”脚本引用将返回500错误。

这是我到目前为止所采取的步骤清单。

  • 使用nuget,删除了与SignalR 1.1.2相关的所有引用和依赖项。仔细检查/ bin和/ packages目录,以确保它们不再引用任何旧库。这是在与2.0升级有关的github 问题上找到的每条评论,该评论说卸载和重新安装SignalR是升级的方式。

  • 通过Package Manager Console(PMC)安装了SignalR 2.0.0-beta2 Install-Package Microsoft.AspNet.SignalR -Pre

  • 使用PMC安装的SQL Server消息传递背板 Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre

  • 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();
        }
    }
}
  • 添加<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 dev工具会在“网络”标签上返回500 Internal Server Error/signalr/hubs呼叫。

  • 文件系统没有/signalr/hubs目录

下一步是查看是否可以使用非常基本的集线器创建新的解决方案,并查看Signal
2.0是否可以正常工作。如果可以,我将比较这两种解决方案,以了解两者之间的区别。

有谁知道我还可以检查或研究什么才能使它起作用?

与StackOverflow相关的问题,具有类似的问题:一,二


问题答案:

事实证明,此问题已通过将项目配置更改为使用本地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服务器”来更改使用的服务器。



 类似资料:
  • SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。

  • 8.2 ABP实时服务 - 集成SignalR 8.2.1 简介 在基于ABP创建的项目中,有一个很容易的方式使用 SignalR,那就是使用 Abp.Web.SignalR。详情请参考SignalR文档。 8.2.2 安装 1. 服务器端 使用Nuget安装Abp.Web.SignalR到你的项目中(通常是你的Web项目)并且在模块中添加被依赖的模块: [DependsOn(typeof(Abp

  • ngx-signalr-hubservice Makes using SignalR in Angular 2/4 easy. Getting started Set up a new project using @angular/cli Install ngx-signalr-hubservicenpm install --save ngx-signalr-hubservice Add the

  • 我在1.0.0版本(java客户端-Storm core)中使用Storm Apache,在3.4.8版本中使用zookeeper。我检查版本2.0.0是否“在性能、新功能以及与外部系统的集成方面有了重大改进”。升级需要哪些步骤?谢谢大家

  • 将信号器与IE 11一起使用时,会发生奇怪的行为。脚本: 我们有一些调度程序类型功能,其中调度程序执行一些操作,其他用户可以实时看到更新(查询)。发送的参数可以在IE客户端进行更新,而无需打开开发人员控制台。 但是一个不工作的方法(-获取查询结果-这是一个服务器 以下是我尝试过的: 为什么JavaScript只在IE中打开一次开发者工具后才起作用? 信号员:在IE9下,在我点击F12之前,客户端无

  • 8.3 ABP实时服务 - 集成Abp.AspNetCore.SignalR 8.3.1 简介 在基于ABP开发的应用中,为了更简单的使用ASP.NET Core SignalR,您可以 使用Abp.AspNetCore.SignalR 包。 注意:该软件包目前是 preview。如果您遇到问题,请提交issues给Github:https://github.com/aspnetboilerpla