我正在尝试将 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)这不是我第一次使用信号器,但这是我第一次遇到这个问题,并且已经努力了几个小时来解决它,但没有运气......
3 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
我注意到您没有安装以下 NuGet 包,这些包在将 SignalR 与 Javascript 集成时是必需的。
Microsoft.AspNet.SignalR
此包引入了在 ASP.NET 应用程序中使用 SignalR 所需的服务器组件和JavaScript 客户端。Microsoft.AspNet.SignalR.JS ASP.NET SignalR 的
脚本客户端。
(这个是由上面的 Microsoft.AspNet.SignalR 自动包含的。)
编辑
通过下面的评论,我们发现 OP 的web.config
文件包含一些拦截/signalr/hubs
url 的url 重写规则。
添加一个规则来防止这个 url 被重写解决了这个问题。
<rule name="signalR" enabled="true" stopProcessing="true"> <match url="^signalr.*" /> <action type="None" /> </rule>
- 3 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消