我正在尝试将Signalr集成到我的Web表单项目中。
首先,使用块金添加参考
Microsoft.AspNet.SignalR.Client;
Microsoft.AspNet.SignalR.Core;
Microsoft.AspNet.SignalR.System.Web;
Microsoft.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(未找到)
这不是我第一次使用Signalr,但这是我第一次遇到此问题,并且努力解决了好几个小时,没有运气...
最佳答案
我注意到您没有安装将SignalR与Javascript集成所需的以下NuGet软件包。
Microsoft.AspNet.SignalR
该软件包引入了在ASP.NET应用程序中使用SignalR所需的服务器组件和JavaScript客户端。
Microsoft.AspNet.SignalR.JS
ASP.NET SignalR的脚本客户端。
(此文件由上面的Microsoft.AspNet.SignalR自动包含。)
编辑
通过下面的注释,我们发现OP的web.config
文件包含一些截获/signalr/hubs
网址的网址重写规则。
添加规则以防止重写此url解决了该问题。
<rule name="signalR" enabled="true" stopProcessing="true">
<match url="^signalr.*" /> <action type="None" />
</rule>
关于c# - 找不到信号中心404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51845412/