正如主题中所述。我正在尝试从一个独立的.asmx web服务访问我的Sitecore上下文。我想知道是否有一种合适的方法。
发布于 2013-04-22 10:35:30
Sitecore上下文应该在传统的ASMX web服务中可用,但是,由于对该服务的请求可能不会触发默认的Sitecore管道,因此最好按如下方式设置站点上下文:
[WebMethod(EnableSession = true)]
public string MyServiceMethod()
{
using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("website")))
{
// Here you can access Sitecore.Context
}
}发布于 2013-04-23 00:35:06
Sitecore非常贪婪地处理所有命中应用程序的URL请求。解决这个问题的简单方法是使用dd the URL to the IgnoreUrlPrefixes setting。但是,这会拒绝您访问某些Sitecore上下文值,例如Site和Database,Sitecore仍可以根据主机名解析这些值。
我建议在httpRequestBegin管道中添加一个处理器,如果ExecuteRequest看起来是您的asmx服务,它会在合适的时候(就在ExecuteRequest之前)中止管道。对MVC请求执行此操作的一个示例可以在here中找到。对于asmx服务,您可能需要直接检查URL字符串。使用processor类的属性配置该URL的加分(c.f.Sitecore Configuration Factory)。
https://stackoverflow.com/questions/16138285
复制相似问题