【发布时间】:2012-09-16 04:18:53
【问题描述】:
我正在处理的网站遇到问题。 从 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 上无效。
如何正确解析网址?
【问题讨论】:
标签: c# javascript json sitecore webmethod