Sitecore:来自asmx webservice的访问上下文

时间:2013-04-22 01:51:21

标签: web-services asmx sitecore

如该主题所述。我试图从独立的.asmx Web服务访问我的Sitecore上下文。想知道这是否是一种正确的做法。

2 个答案:

答案 0 :(得分:6)

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

[WebMethod(EnableSession = true)]
public string MyServiceMethod()
{
    using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("website")))
    {
        // Here you can access Sitecore.Context
    }
}

答案 1 :(得分:3)

Sitecore相当贪婪地处理所有触及应用程序的URL请求。解决这个问题的简单方法是dd the URL to the IgnoreUrlPrefixes setting。但是,这会拒绝您访问某些Sitecore上下文值,例如Site和Database,Sitecore仍然可以根据主机名解析这些值。

如果URL似乎是您的asmx服务,我建议在httpRequestBegin管道中添加一个处理器,该管道在适当的时刻(ExecuteRequest之前)中止管道。可以找到为MVC请求执行此操作的示例here。对于您的asmx服务,您可能需要直接检查URL字符串。使用处理器类(c.f。Sitecore Configuration Factory)上的属性配置该URL的加分点。