0

如题所述。我正在尝试从独立的 .asmx Web 服务访问我的 Sitecore 上下文。想知道是否有正确的方法。

4

2 回答 2

6

Sitecore 上下文应该在经典的 ASMX Web 服务中可用,但是,因为对服务的请求可能不会触发默认的 Sitecore 管道,所以最好按如下方式设置站点上下文:

[WebMethod(EnableSession = true)]
public string MyServiceMethod()
{
    using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("website")))
    {
        // Here you can access Sitecore.Context
    }
}
于 2013-04-22T02:35:30.207 回答
3

Sitecore 非常贪婪地处理所有命中应用程序的 URL 请求。解决此问题的简单方法是将 URL 添加到 IgnoreUrlPrefixes 设置。但是,这会拒绝您访问某些 Sitecore 上下文值,例如站点和数据库,Sitecore 仍然可以根据主机名解析这些值。

如果 URL 似乎是您的 asmx 服务,我建议向httpRequestBegin管道添加一个处理器,该处理器会在正确的时刻(就在之前)中止管道。ExecuteRequest可以在此处找到为 MVC 请求执行此操作的示例。对于您的 asmx 服务,您可能需要直接检查 URL 字符串。使用处理器类上的属性配置该 URL 的奖励积分(参见Sitecore 配置工厂)。

于 2013-04-22T16:35:05.970 回答