2013-02-26 49 views
3

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

Sitecore中存在一個問題,點擊Sitecore中的 Application_Start並啓動RouteTable.Routes.MapHubs()。

我有雙重檢查,我映射到我的URL/signalR/hubs默認的佈局。 還包括JQuery,JQuery SignalR和自定義JS的腳本塊。

除了URL /信號/集線器沒有映射之外,它在客戶端拉下所有東西。

我注意到Sitecore中MVC RouteTables需要一些特殊處理,但是這些不直接解決當前遇到的問題。

謝謝 -

+0

什麼版本的Sitecore? – techphoria414 2013-02-27 02:34:10

+0

這是6.6(正如凱文正確認爲)更新3. – Jeremy 2013-02-27 14:10:16

回答

7

左右。 ..

這是簡單的事情,使這項工作。

您必須將/ signalr和/ signalr /集線器添加到SignalR的忽略路徑以與Sitecore一起使用。

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

當我把它放到位後,我能夠在Application_Start中正確地看到MapHubs連線。它不會始終如一地擊中斷點,因爲它無法提供URL而不嘗試獲取Sitecore項目。現在我看到它一貫地達到了斷點。

感謝您的回覆!

5

我假設你正在使用Sitecore的6.6正如您所提到的Sitecore的MVC RouteTables。嘗試使用WebActivator將您的集線器映射註冊到RouteTable中。 WebActivator爲您提供了將此引導程序代碼添加到PreApplicationStartMethodPostApplicationStartMethod的選項,以便您可以註冊路線並避免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> 
+0

凱文 - 感謝這讓我調查了另一種方法。 – Jeremy 2013-02-27 14:58:49

+0

有興趣聽​​到我最近在看Sitecore和SignalR的一些工作。 – 2013-02-27 15:59:14

+0

凱文 - 見下文。什麼讓我陷入困境,是當你檢查你的URL/signalR/hubs目錄時,Sitecore會執行Item Not Found行爲並且Application_Start正在被觸發(大約一半的時間)。 所以要清楚的是,您不需要啓用MVC,也不需要進行任何預處理器處理,以使其在您的Sitecore.Web.Application中的MapHub命中(我們使用它作爲Globalasax.cs for Global .asax作爲最佳實踐)。您只需將路徑添加到IgnoreUrlPrefixes中即可。 – Jeremy 2013-02-28 13:32:19