我使用Sitecore的直接訪問API當前項目。我有時遇到了一些情況,我想要一個獨立的程序集調用Sitecore,但不一定在Web上下文中。沒有任何方法可以訪問Sitecore上下文,而不需要在網站上部署代碼?以任何方式在web上下文之外以編程方式訪問Sitecore?
當然還有噸的配置設置。到目前爲止,我試圖欺騙一個Web上下文並提供必要的設置都遇到了失敗。是否有需要什麼樣的步驟,特別設置了將執行加載全局對象,並做一切通常會通過Sitecore的請求處理/流水線處理來實現任何文件?
我使用Sitecore的直接訪問API當前項目。我有時遇到了一些情況,我想要一個獨立的程序集調用Sitecore,但不一定在Web上下文中。沒有任何方法可以訪問Sitecore上下文,而不需要在網站上部署代碼?以任何方式在web上下文之外以編程方式訪問Sitecore?
當然還有噸的配置設置。到目前爲止,我試圖欺騙一個Web上下文並提供必要的設置都遇到了失敗。是否有需要什麼樣的步驟,特別設置了將執行加載全局對象,並做一切通常會通過Sitecore的請求處理/流水線處理來實現任何文件?
如果你不想下去Web服務的路線,this blog post介紹了設定類庫項目,訪問Sitecore的信息。在這種情況下,它用於NUnit測試,但我相信這種技術是相同的。總而言之,它需要將Sitecore web.config信息複製到app.config文件(以及其他配置文件)中,引用相關的Sitecore程序集並進行一些配置調整以修復對App_Config文件夾的引用。
注意,使用這種技術時,你Sitecore.Context.Item
將是空的,所以你可能會需要直接通過他們的路徑或ID例如訪問項目
var db = Sitecore.Configuration.Factory.GetDatabase("master");
var homeItem = db.GetItem("/sitecore/content/home");
//or
var homeItem = db.GetItem(new Sitecore.Data.ID("<your GUID here>"));
太棒了!謝謝。 – Iucounu
您是否嘗試過查看Web服務?我不確定這是否符合「網絡環境之外」的標準,但它可能是一個開始的好地方。 –
謝謝,dhulk。有趣的是,我現在將一些HTTP處理程序放在一起,但我仍然有興趣找到一種方法直接對Sitecore進行編程,但沒有HttpContext。 – Iucounu