3

有人让 SignalR 和 Sitecore 一起工作吗?

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

我已经仔细检查了我是否映射到布局上的 URL/signalR/hubs 默认值。还包括 JQuery、JQuery SignalR 和自定义 JS 的脚本块。

除了 URL/signalr/hubs 没有映射之外,它可以在客户端很好地下拉所有内容。

我注意到 Sitecore 中需要对 MVC RouteTables 进行一些特殊处理,但这些并不能直接解决当前遇到的问题。

谢谢 -

4

2 回答 2

7

因此,经过一段时间的努力...

这是使这项工作发挥作用的简单因素。

您必须将 /signalr 和 /signalr/hubs 添加到忽略路径,SignalR 才能与 Sitecore 一起使用。

<setting name="IgnoreUrlPrefixes"                value="/sitecore/default.aspx|/trace.axd|.....|/signalr|/signalr/hubs" />

在我把它就位后,我能够在 Application_Start 中看到 MapHubs 正确连接。之前它不会一直达到断点,因为它无法在不尝试获取 Sitecore 项目的情况下提供 URL。现在我看到它一直在断点。

感谢您的回复!

于 2013-02-27T15:03:21.930 回答
5

我假设您使用的是 Sitecore 6.6,因为您提到了 Sitecore MVC RouteTables。尝试使用WebActivator在 RouteTable 中注册您的集线器映射。WebActivator 为您提供了将此引导代码添加到 aPreApplicationStartMethod或 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
        }
    }
}

另一种方法是将注册代码添加到自定义管道处理器中,并将此处理器添加到初始化事件管道中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>
于 2013-02-27T08:30:38.080 回答