找不到信号中心404

时间:2018-08-14 15:54:40

标签: c# asp.net webforms signalr

我正在尝试将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,但这是我第一次遇到此问题,并且努力解决了好几个小时,没有运气...

3 个答案:

答案 0 :(得分:1)

我注意到您没有安装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的URL重写规则。

添加规则以防止该url被重写解决了问题。

<rule name="signalR" enabled="true" stopProcessing="true"> 
    <match url="^signalr.*" /> <action type="None" /> 
</rule> 

答案 1 :(得分:0)

修复启动类名称空间

namespace ns 

成为

namespace TeltonikaSiteWebApplication.App_Code

答案 2 :(得分:0)

重写规则在Web配置上与它冲突,与Signalr冲突。我需要添加一个新的使其工作。 。感谢指导中的@pfx。