c# - 未找到信号器集线器 404
问题描述
我正在尝试将 Signalr 集成到我的 Web 表单项目中。
首先,使用 nugget 添加引用
- Microsoft.AspNet.SignalR.Client;
- Microsoft.AspNet.SignalR.Core;
- Microsoft.AspNet.SignalR.System.Web;
- 微软.Owin;
- Microsoft.Owin.Host.SystemWeb;
- Microsoft.Owin.Security;
- 欧文
我的创业班:
[assembly: OwinStartup(typeof(ns.App_Code.Startup))]
namespace ns
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我的枢纽:
public class PositionHub : Hub
{
static ConcurrentDictionary<int, List<string>> connectedUsers = new ConcurrentDictionary<int, List<string>>();
public override Task OnConnected()
{
return base.OnConnected();
}
}
最后,客户端:
<script type="text/javascript" src="Scripts/jquery-2.2.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.3.0.min.js"></script>
<script src="<%= ResolveUrl("~/signalr/hubs") %>" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var logger = $.connection.positionHub;
logger.start();
});
</script>
此外,在 web.config 中添加了以下内容:
<add key="owin:AutomaticAppStartup" value="true" />
和
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
当我运行该应用程序时,它会出现 404 错误:GET http://localhost:41363/signalr/hubs 404 (Not Found)
这不是我第一次使用信号器,但这是我第一次遇到这个问题,并且一直在努力解决它几个小时,但没有运气......
解决方案
我注意到您没有安装将 SignalR 与 Javascript 集成时所需的以下 NuGet 包。
Microsoft.AspNet.SignalR此包引入在 ASP.NET 应用程序中使用 SignalR 所需
的服务器组件和JavaScript 客户端。Microsoft.AspNet.SignalR.JS用于 ASP.NET SignalR 的
脚本客户端。
(这个由上面的 Microsoft.AspNet.SignalR 自动包含。)
编辑
通过下面的评论,我们发现 OP 的web.config
文件包含一些截取 url 的 url 重写规则/signalr/hubs
。
添加规则以防止此 url 被重写解决了该问题。
<rule name="signalR" enabled="true" stopProcessing="true">
<match url="^signalr.*" /> <action type="None" />
</rule>
推荐阅读
- spss - 使用 SPSS 超越 ANOVA 的统计模型
- ios - 如何在 ScrollView 中制作全屏背景图像并保持纵横比
- visual-studio - 移动文件夹后项目 nuget 引用无法更新
- image - 在java中找到对称矩阵的第二小特征向量
- excel - excel公式在文件路径文本字符串中查找零件号
- ios - 解开可选变量时意外发现 nil 但变量有值
- swift - 呈现和关闭模式视图控制器时如何保持选择集合视图单元格?
- powershell - 在我的组织的所有域中查找用户和组
- r - 如何从 dplyr::tbl 获得详细的数据库错误消息?
- sql - SQL在数据库中查找后代的网格位置