我正在嘗試將 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 關注
- 319 瀏覽
添加回答
舉報
0/150
提交
取消