【问题标题】:/signalr/hubs 404 (Not Found) in DNN 7.3.4DNN 7.3.4 中的 /signalr/hubs 404(未找到)
【发布时间】:2017-07-03 16:43:19
【问题描述】:

我正在使用 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 () {
    //....
})

但不是每次都显示这个。

【问题讨论】:

    标签: c# asp.net signalr dotnetnuke dotnetnuke-7


    【解决方案1】:

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

    我的owin startup class 没有启动。我已经在 web config 中有这些键来自动启动 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.SystemWebowin后启动并注册hub路由成功。

    【讨论】:

    • 对我来说,问题就是这个,复制那个 dll 后问题就消失了。
    【解决方案2】:

    我认为您缺少在应用程序中启动 signalR 集线器的 OwinStartup 类。在我的 github 上查看这个名为 DnnLogAnalyzer 的项目。我有一个名为 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 的提示。

    【讨论】:

    • 我已经添加了启动类,并且在 web 配置中我有这些用于自动启动 owin 的密钥&lt;add key="owin:AutomaticAppStartup" value="true" /&gt; &lt;add key="owin:appStartup" value="MyNamespace.MyStartupClass" /&gt;
    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    相关资源
    最近更新 更多