有没有人有SignalR和Sitecore一起工作?
Sitecore中存在一个问题,即在Sitecore中点击Application_Start并启动它以启动RouteTable.Routes.MapHubs().
我已经仔细检查过我在布局上映射到我的URL/signalR/hubs默认值.还包括JQuery,JQuery SignalR和自定义JS的脚本块.
除了URL/signalr/hubs没有映射之外,它会在客户端将所有内容都拉下来.
我注意到Sitecore for MVC RouteTables需要一些特殊处理,但这些并不直接解决当前遇到的问题.
谢谢 -
所以经过这样的研究之后......
让这项工作变得简单易行.
您必须将/ 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项目.现在我看到它始终如一地突破了断点.
谢谢你的回复!
我假设您正在使用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)