我正在尝试将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/

10-15 13:20