有沒有人有使用.NET Web服務訪問Sitecore項目的運氣?我的服務器上有很多Web應用程序仍在Coldfusion中。我希望能夠調用Web服務來下拉項目,但是當我嘗試這樣做時,我得到一個異常「Sitecore.Data.Items.Item無法序列化,因爲它沒有無參數構造函數。」通過.NET Web服務訪問Sitecore項目
回答
看看Sitecore標準的Web服務,你可以在你的解決方案的/ sitecore/shell/WebService文件夾下找到它。它提供了一些Sitecore項目和字段的基本操作,但它通常足以用於提取或保存數據。
希望這會有所幫助。
感謝您的提示。我想我基本上已經斷定這不能做到。 – Kyle 2010-08-02 20:31:19
你能否進一步解釋爲什麼標準服務不適合你?基於你在這裏說的一切,這聽起來像是最好的解決方案 – techphoria414 2010-08-10 21:45:09
我相信它會以某種方式工作。這裏的關鍵是我希望能夠重用已經編寫的方法來檢索在我的一個sitecore頁面上的Web控件內部使用的特定項目集合。基本上我不想有兩個不同的代碼片段來維護它們,基本上都是一樣的。 – Kyle 2010-08-11 17:26:56
我在SDN forum上回答了這個問題。您可以創建自己的包裝對象,該對象用Sitecore項目填充並設置其成員。最難的部分是將您的會員編成文件並從真實的Sitecore項目中分配它們。如果你想要一切,那麼我認爲這將是困難的。如果你只是想要一些東西,那麼它是可行的。例如。
[Serializable]
public class SitecoreItem {
public string ID;
// more members
SitecoreItem(Sitecore.Data.Items.Item scItem) {
this.ID = scItem.ID;
// assign more members from the true Sitecore item
}
}
然後在您的WS方法填補一個新的實例與您的實際Sitecore的項目並返回:
return new SitecoreItem(actualSCItem);
謝謝,這是有道理的。有關如何使它更通用的想法?我想有一些東西可以用於任何項目以返回所有字段。我意識到你說這會更困難,但是你有什麼想法可以開始討論這個問題嗎? – Kyle 2010-08-05 13:09:05
你不能序列化Sitecore.Data.Items.Item類,所以你唯一的辦法就是創建一個包裝器並完成分配成員的工作。如果你花時間去瀏覽所有的屬性,這個解決方案是通用的。唯一的其他選擇是使用內置的WS Yan提到 – 2010-08-05 14:50:12
字段類可以序列化嗎?這將是我的關鍵。我需要獲取所有的字段信息,而不是每個模板都包含相同的字段。 – Kyle 2010-08-05 15:33:03
如果這兩個串行器及解串器可以訪問Sitecore的數據庫,那麼你可以很輕鬆創建一個只包含ID,數據庫名稱,版本和語言的封裝器。然後在另一端進行反序列化時,可以使用該信息從數據庫中重新獲取相同的Sitecore項目。
如果反序列化器根本無法訪問數據庫,那麼它確實取決於您對使用數據的需求。我通常會遍歷所有字段(請先記住使用item.Fields.ReadAll()
),並將它們存儲在字典中以便於訪問。對於序列化,我將其轉換爲鍵值對的List<T>
,並忽略Dictionary
成員(因爲它不能被序列化),然後在反序列化中重新填充它。我還在課堂上保留了一些其他屬性,如ID,語言,版本,模板,路徑等。如果你創建一個完整的模型類庫,以便每個模板都映射到一個類(有些人可以),你可以(可能)直接將它們序列化,因爲它們可能(可能)不再綁定到Sitecore項目。
整個類庫的東西正是我們所做的。每個模板都有一個類,每個字段都映射到一個屬性。我們在Sitecore中創建了一個工具來自動構建這些工具。我建議這種方法,但前提是你可以自動化。如果沒有,那麼就像爲Sitecore項目的每個成員創建包裝一樣繁瑣。 – 2010-08-05 18:10:35
- 1. 通過Sitecore Web服務訪問項目字段
- 2. 如何訪問Sitecore Lucene通過項目Web API搜索?
- 3. 從另一個web項目訪問Sitecore
- 4. .NET Web服務項目
- 5. 通過Web服務訪問Ant?
- 6. 通過Silverlight訪問SharePoint Web服務
- 7. 通過JavaScript訪問REST Web服務
- 8. 通過HTTPS訪問web服務給ArgumentException
- 9. 通過Web服務訪問數據庫
- 10. 使用JSON通過Android訪問.NET Web服務
- 11. 如何通過Web服務訪問.NET GUI應用程序?
- 12. 通過c#項目訪問wamp服務器www目錄
- 13. 如何從獨立WCF服務訪問Sitecore項目
- 14. 無法通過API訪問sitecore項目字段
- 15. .NET XML Web服務,使用類無法訪問Web服務類
- 16. 從.NET訪問Sharepoint列表Web服務
- 17. 在Android中訪問C#.net web服務
- 18. .net web服務和同時訪問
- 19. 如何通過public訪問服務器中的url項目?
- 20. 通過Android使用.NET web服務
- 21. 通過.Net使用SAP Web服務
- 22. 訪問Web服務
- 23. 通用.Net Web服務
- 24. 當被IIS訪問時MSMQ訪問被拒絕.net web服務
- 25. 從.net客戶端訪問ssl服務器(web服務)
- 26. 從Mac iPhone項目通過Wifi網絡消費Vista .NET Localhost Web服務
- 27. Sharepoint Web服務項目數據(訪問「創建者」列)
- 28. Web服務.NET Framework問題
- 29. 給web服務訪問windows服務
- 30. 通過Web服務
我不確定這是可能的。一個Sitecore.Data.Items.Item是一個非常健壯的(閱讀:充滿了做更多的Sitecore DAL調用的方法)類,真的不適合從Web服務返回。你爲什麼做這個?也許有一個更簡單的實現? – EliThompson 2010-07-30 18:58:54
我對一些簡單的東西絕對開放。基本上,我在Sitecore中有許多內容項目需要在Coldfusion應用程序中顯示。在我的特殊情況下,我在Sitecore中擁有所有的新聞文章,但是有一些Coldfusion應用程序以某種形式或形式吸引新聞項目。 – Kyle 2010-07-30 20:24:30
提供了很多選項來回答這個問題,但沒有給出足夠清晰的反饋給這個男人一個很好的答案。 – techphoria414 2010-09-06 04:43:11