SignalR和Sitecore

Jer*_*emy 3 sitecore signalr

有没有人有SignalR和Sitecore一起工作?

Sitecore中存在一个问题,即在Sitecore中点击Application_Start并启动它以启动RouteTable.Routes.MapHubs().

我已经仔细检查过我在布局上映射到我的URL/signalR/hubs默认值.还包括JQuery,JQuery SignalR和自定义JS的脚本块.

除了URL/signalr/hubs没有映射之外,它会在客户端将所有内容都拉下来.

我注意到Sitecore for MVC RouteTables需要一些特殊处理,但这些并不直接解决当前遇到的问题.

谢谢 -

Jer*_*emy 7

所以经过这样的研究之后......

让这项工作变得简单易行.

您必须将/ signalr和/ signalr/hub添加到SignalR的Ignore Path以与Sitecore一起使用.

<setting name="IgnoreUrlPrefixes"                value="/sitecore/default.aspx|/trace.axd|.....|/signalr|/signalr/hubs" />
Run Code Online (Sandbox Code Playgroud)

在我完成这个之后,我能够在Application_Start中看到MapHubs正确连线.它不会始终达到断点,因为它无法提供URL而不尝试获取Sitecore项目.现在我看到它始终如一地突破了断点.

谢谢你的回复!


Kev*_*bee 5

我假设您正在使用Sitecore 6.6,因为您已经提到了Sitecore MVC RouteTables.尝试使用WebActivator在RouteTable中注册集线器映射.WebActivator为您提供了将此引导代码添加到a PreApplicationStartMethod或a中的选项,PostApplicationStartMethod以便您可以注册路由并避免Sitecore的通配符路由优先.我已经使用这种方法来引导Sitecore下的Web API路由.

using System;

[assembly: WebActivator.PreApplicationStartMethod(
    typeof($rootnamespace$.App_Start.MySuperPackage), "PreStart")]

namespace $rootnamespace$.App_Start {
    public static class MySuperPackage {
        public static void PreStart() {
            // Add your start logic here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是将注册代码添加到自定义管道处理器中,并将此处理器添加到初始化事件管道中 App_Config\Include\Sitecore.Mvc.config

<pipelines>

  <!-- Loader -->

  <initialize>
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters, Sitecore.Mvc"/>
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeControllerFactory, Sitecore.Mvc"/>
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeRoutes, Sitecore.Mvc"/>
  </initialize>
Run Code Online (Sandbox Code Playgroud)