3

SignalRとSitecoreが連携している人はいますか?

SitecoreでApplication_Startを押して、RouteTable.Routes.MapHubs()をキックオフするという問題がSitecoreにあります。

レイアウトのデフォルトのURL/signalR/hubsにマッピングしていることを再確認しました。JQuery、JQuery SignalR、およびカスタムJSのスクリプトブロックも含まれています。

URL / Signalr / Hubsがマッピングされていないことを除いて、クライアント側ですべてを正常にプルダウンします。

Sitecore for MVC RouteTablesで必要な特別な処理に気づきましたが、これらは現在発生している問題に直接対処していません。

ありがとう -

4

2 に答える 2

7

それで、これに少し取り組んだ後...

これを機能させるのは単純なことでした。

Sitecoreと連携するには、SignalRの無視パスに/signalrと/signalr/hubsを追加する必要があります。

<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 MVC RouteTablesについて説明したように、Sitecore6.6を使用していると想定しています。WebActivatorを使用して、ハブマッピングをRouteTableに登録してみてください。WebActivatorには、このブートストラップコードをaPreApplicationStartMethodまたはaに追加するオプションがありPostApplicationStartMethod、ルートを登録して、Sitecoreのワイルドカードルートが優先されるのを防ぐことができます。私はこのアプローチを使用して、SitecoreでWebAPIルートをブートストラップしました。

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 に答える