在Sitecore我試圖爲我們的客戶端設置一種方法來修改內容樹中的robots.txt文件。我試圖設置一個MVC控制器動作,該動作映射爲路由「robots.txt」並返回文件內容。我的控制器看起來是這樣的:如何將控制器操作的Sitecore上下文附加到路由robots.txt中?
public class SeoController : BaseController
{
private readonly IContentService _contentService;
private readonly IPageContext _pageContext;
private readonly IRenderingContext _renderingContext;
public SeoController(IContentService contentService, IPageContext pageContext, IRenderingContext renderingContext, ISitecoreContext glassContext)
: base(glassContext)
{
_contentService = contentService;
_pageContext = pageContext;
_renderingContext = renderingContext;
}
public FileContentResult Robots()
{
string content = string.Empty;
var contentResponse = _contentService.GetRobotsTxtContent();
if (contentResponse.Success && contentResponse.ContentItem != null)
{
content = contentResponse.ContentItem.RobotsText;
}
return File(Encoding.UTF8.GetBytes(content), "text/plain");
}
}
和路由配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.MapRoute("Robots.txt", "robots.txt", new { controller = "Seo", action = "Robots" });
}
}
這一切,如果我使用的路線沒有「.txt」擴展的偉大工程。但是,添加擴展後,由於上下文數據庫爲空,我在域層中獲得空引用異常。這裏就是錯誤發生:
public Item GetItem(string contentGuid)
{
return Sitecore.Context.Database.GetItem(contentGuid);
}
我假設有在Sitecore的忽略擴展名爲.txt的設置。我試着將它添加爲配置的Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions設置中允許的擴展名。還有什麼我可以錯過?