目前正努力将我们的网站从7.2升级到8.2 161115,并且如果网址不中有空格,则会收到“找不到文档”错误。
我们网站中的几乎所有网址都在内容项名称中有空格并且工作正常。只有少数人没有。
例如这些工作:
/Page Name/
/Page-Name/
/Page/Sub Page/
/Page/Sub-Page/
这些不起作用:
/Page
/Page/SecondaryPage
在我们调用的特殊模板上发生此错误" Context Resolver"它根据规则将访问者转发到不同的页面。该模板有三个字段:
Forwarding Enabled (checkbox)
Rules (ruleset)
Default Item (droptree)
这个想法是这些项目决定了访问者的发送地点。我们有一个运行以下代码的管道:
public override void Process(HttpRequestArgs args)
{
if (args == null) return;
var item = Sitecore.Context.Item;
if (item == null) return;
if (item.TemplateID != SitecoreDefinitions.ContextForwarderTemplate) return;
if (!item.IsContextForwarderEnabled()) return;
var rulesItem = item.Fields["Rules"];
if (rulesItem != null)
{
RuleFactory.InvalidateCache();
var rules = RuleFactory.GetRules<RuleContext>(rulesItem);
if (sitecoreRepository.ExecuteRules(rules.Rules))
return;
}
ReferenceField refItem = item.Fields["Context"];
Context.Item = refItem.TargetItem;
}
这项工作非常棒,正如我们之前的7.2网站所预期的那样,任何有空格的网址都是如此。如果没有空间,则失败。没有规则,没有区别,所以错误发生在这一行:
Sitecore.Context.Item = someNewItem
思考?我们可以通过删除空格轻松地在工作网址上使用此模板类型重现此问题,并在失败的网址上添加空格以使其有效。