我正在处理的网站遇到问题。从 JavaScript 函数调用 WebMethod:
var ajaxOptions = {
url: "/layouts/foobar/Foo.aspx/GetBar"
}
$.ajax(ajaxOptions).done(function(result) {
loadResult(result, a);
});
Foo.Aspx 中的 GetBar 方法如下所示:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static object GetBar()
{
return FoobarManager.GetItems();
}
该函数返回一个有效的 JSON 对象。Sitecore 在 FoobarManager 中使用。例子:
Context.Database.GetItem("/sitecore/content/foobar");
在开发和测试环境中,事情运行得非常顺利,从来没有出现过任何问题。部署到暂存环境后,我看到 GetBar 函数的响应是我们自定义的 404 页面。我认为这是因为 Sitecore 试图解析路径“/layouts/foobar/Foo.aspx/GetBar”但失败了。
既然是在D和T环境下工作的,那肯定是配置问题。我将 GetBar url 添加到 IgnoreUrlPrefixes 设置中。这导致 ajax 调用中的 500 响应:Sitecore.Context.Database 为空。我认为它与 ItemResolver 有关,但我不明白为什么它在 D 和 T 上有效,但在 A 上无效。
我该怎么做才能正确解析网址?