从控制台应用程序中的API访问Sitecore DB

时间:2014-09-18 18:36:21

标签: database console sitecore

我想从控制台应用程序访问sitecore数据库和项目,如

Sitecore.Data.Database db = Sitecore.Context.Database 要么 Sitecore.Data.Database db = Sitecore.Data.Database.GetDatabase(“master”)

如何配置和设置我的控制台应用程序以访问上述数据库?

感谢大家的建议,我真的对配置更改感兴趣,我使用了webservice,但它的方法非常有限。例如,如果我想使用模板创建一个Item并插入具有预填充值的项目,则没有这样的选项。我正在寻找控制台apporach的原因是我想从XML或excel表导入内容并将其推送到sitecore树,最终使用计划任务定期运行控制台应用程序。我不想复制整个web.config和app_config。如果有人已经这样做了,您能否发布您的步骤和必要的配置更改?

4 个答案:

答案 0 :(得分:1)

我想扩展@ JermDavis'发布并注意Sitecore并不是不在Web应用程序中时被访问的忠实粉丝。但是,如果您仍想执行此操作,则需要确保在控制台应用程序的app.config文件中具有站点的web.config和App_Config中的所有必要配置设置。

此外,您永远无法在控制台应用程序中调用Sitecore.Context,因为Sitecore上下文位于HttpContext之上,这意味着它必须是一个应用程序并且具有有效的请求你要用它。你正在寻找的东西更像是Sitecore.Configuration.Factory.GetDatabase("master")

祝你好运,编码愉快:)。

答案 1 :(得分:1)

这听起来像Sitecore Item Web API的工作。每当我需要从Content Management服务器上下文之外的master数据库或Sitecore应用程序的上下文之外访问Sitecore数据时,我都会使用Sitecore Item Web API。 Web API绝对不允许您执行标准Sitecore API所做的所有事情,但它可以作为一个良好的基础,我现在可以扩展到Web API,而不是尽可能编写自己的自定义Web服务。

答案 2 :(得分:0)

我认为你有两个选择:

1)将网站的web.config的Sitecore位导入到您的控制台应用程序的app.config中,以便Sitecore API"正常工作"

我确定我在阅读有关此内容的博客文章,但我现在无法找到该引用。 (我将再看看)但我认为简单但冗长的方法是复制所有< sitecore />元素及其引用的所有单独文件。我非常确定你可以通过一些思考将这一点减少到数据访问所需的配置子集。

2)不要直接使用Sitecore API,连接到远程公开访问它的Web服务。

其中有一些已经存在。 Sitecore本身暴露了一个,Sitecore Rocks有一个,而Hedgehog TDS也有一个。并且您可以随时编写自己的(因为在Sitecore ASP.Net应用程序中运行的任何Web服务都可以进行数据库调用和来回报告值 - 只需记住考虑安全性,如果此Web服务可能因任何原因而最终暴露在外部)< / p>

John West在这里链接了一些相关内容:

http://www.sitecore.net/Learn/Blogs/Technical-Blogs/John-West-Sitecore-Blog/Posts/2013/09/Getting-Data-Out-of-the-Sitecore-ASPNET-CMS.aspx

- 编辑添加 -

我还没找到我记得的博文。但我遇到了这个SO线程:

Accessing Sitecore API from a CLI tool

指的是这篇博文:

http://www.experimentsincode.com/?p=232

我认为

提供了选项1所需的信息。

(并且它提醒我,当然,当您复制配置文件时,您必须将Sitecore二进制文件复制到您的应用程序文件夹中)

答案 3 :(得分:0)

感谢JemDavis的建议。 复制配置并对配置部分进行更改以消除冲突后。我复制了几乎所有的Sitrecore,分析和lucene dll,它运行得很好。 您唯一需要记住的是,将app_config文件夹复制到您的dll所在的同一位置。 再次感谢JemDavis ....