/signalr/hubs DNN 7.3.4 中的 404(未找到)

/signalr/hubs 404 (Not Found) in DNN 7.3.4

我正在使用 DNN 7.3.4 开发一个网站。我是这方面的信号员。 我已经为 AUM_DoNotRewriteRegEx.

执行了这个脚本
IF NOT EXISTS (SELECT * FROM dnn_hostsettings WHERE SettingName = 'AUM_DoNotRewriteRegEx' )

      insert into dnn_hostsettings
        (SettingName
        , SettingValue
        , SettingIsSecure 
        , CreatedByUserId
        , CreatedOnDate
        , LastModifiedByUserId
        , LastModifiedOnDate
        )
        values(
        'AUM_DoNotRewriteRegEx'
        ,'/DesktopModules/|/Providers|/LinkClick\.aspx|/SignalR'
        , 0
        , -1
        , GETDATE()
        , -1
        , GETDATE()
        )

    GO

    IF EXISTS (SELECT * FROM dnn_hostsettings WHERE SettingName = 'AUM_DoNotRewriteRegEx' and SettingValue not like '%/signalr%' )

    update dnn_hostsettings
        set settingValue = (select settingValue + '|/signalr' from dnn_hostsettings where settingname = 'AUM_DoNotRewriteRegEx')
    where settingname = 'AUM_DoNotRewriteRegEx'

    GO

在我的页面中

<script type="text/javascript" src='<%=ResolveClientUrl("~/signalr/hubs") %>'></script>

var objHub = $.connection.myHub;
$.connection.hub.start().done(function () {
    //....
})

但它并不是每次都显示这个。

我认为您缺少在您的应用程序中启动 signalR 集线器的 OwinStartup class。在我的 github 上查看名为 DnnLogAnalyzer. I have a class called Startup.cs 的这个项目,它连接到 OwinStartup 并启动​​应用程序的 signalR 集线器。

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(DotNetNuclear.Modules.LogAnalyzer.Components.Startup))]

namespace DotNetNuclear.Modules.LogAnalyzer.Components
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ...
            app.MapSignalR();
        } 
    }
}

如果您是 DNNHero.com 订阅者,您还可以查看我的分步教程,了解有关获取 SignalR working in your DNN application 的提示。

经过大量的研发,我发现了这个

我的 owin startup class 没有启动。我已经在网络配置中有这些键可以自动启动 owin

<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="MyNamespace.MyStartupClass" />

但是owin startup class在这样做之后没有开始。

然后我发现Microsoft.Owin.Host.SystemWeb负责启动owin startup class。我错过了在我的项目中添加这个 dll 。添加 Microsoft.Owin.Host.SystemWeb owin 后启动并成功注册中心路由。