如何排除sitecore或glassmapper处理路由?
尝试加载标准MVC路由(控制器/操作)。我不希望sitecore处理它。我看到了这个错误:
Attempt to retrieve context object of type 'Sitecore.Mvc.Presentation.RenderingContext' from empty stack.
使用Sitecore 8。
答案 0 :(得分:2)
IgnoreUrlPrefixes
设置应该处理此问题。
只需在其中添加路由前缀,Sitecore就应该忽略它。
<setting name="IgnoreUrlPrefixes" value="....|/yourcontroller"/>
此处有更多信息
答案 1 :(得分:1)
您可以使用MVC路由属性来管理常规路由。要做到这一点,你需要在sitecore初始化管道中注入一个小处理器。
public class RegisterMvcAttributeRoutesPipeline
{
public void Process(PipelineArgs args)
{
RouteTable.Routes.MapMvcAttributeRoutes();
}
}
然后你需要注入你的处理器:
<sitecore>
<pipelines>
<initialize>
<processor type="{Your processor type here}" patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeControllerFactory, Sitecore.Mvc']" />
</initialize>
</pipelines>
</sitecore>
现在您已准备好使用路由属性:
[RoutePrefix("category")]
public class CategoryController : Controller
{
[HttpGet]
[Route("get/{id}")]
public ActionResult Get(string id)
{
return Content("MVC url with route attributes");
}
}
干杯, 亚历克斯。