我想讓一些Sitecore數據可用於非Sitecore頁面。數據將由JQuery請求,並且應該採用JSON格式。我們也將需要更新的項目,執行工作流操作等從WebMethod內部獲取Sitecore用戶?
我們對Sitecore的6.4左右,據我所知,我們沒有ItemWebAPI或MVC作爲選件提供。 .NET是版本4
我們試圖用GET請求做,看着查詢字符串參數並分支到一個或另一個函數。一個問題是,查詢字符串的默認最大大小對於我們傳遞的數據來說太小了,並且將其設置爲允許的最大值(這顯然違反了安全最佳實踐)也不夠可靠。因此,出於這個原因和一些緩存相關的問題,我們轉移到POST。 JQuery似乎無法以頁面想要的方式發送POST數據,所以我們不得不引入一些代碼來解析請求有效載荷文本(即我們不能使用Request.Form [「something」])。我們確實得到了這個工作,但它很醜陋。在那和分支之間它是一個糾結。
我現在正在看WebMethods。除了簡化代碼外,WebMethods還爲我們提供了一些免費的東西,比如json格式的錯誤消息,缺少參數的敏感錯誤消息等。
我有一個測試頁面用於設置請求(只是HTML和JQuery)和一個ASPX頁面來完成WebMethods。我將WebMethods頁面的URL放在web.config的IgnoreUrlPrefixes中,如下所述:WebMethod not accessible in Sitecore。我可以使用Sitecore.Configuration.Factory.GetDatabase(databasename)
訪問Sitecore數據庫。
所以整體的WebMethods似乎是更好的代碼和工作比我們以前爲好。現在我可以閱讀代碼,我只是編寫可以工作的函數,而不用花費大部分時間來弄清楚爲什麼事情不能正常工作和實施解決方法。
但我們確實失去了Sitecore的背景下,作爲在回答說明所引用的問題。我一直無法找到獲得Sitecore用戶的方法。
我可以在Chrome開發者工具看,當我提出一個要求,有一個sitecore_userticket的cookie請求外出。我嘗試將該cookie的值(以及Sitecore.Web.Authentication.TicketManager.GetCurrentTicketId
的結果)提供給Sitecore.Web.Authentication.Ticket.Parse
,但我得到一個分析錯誤。有沒有辦法使用該cookie來獲取用戶?
或者有沒有辦法讓用戶從ASP.NET_SessionId cookie?
如果沒有這些都是可行的,什麼是管理的登錄信息的好辦法?我知道我可以以編程方式登錄用戶,但不希望在瀏覽器中跟蹤Sitecore用戶名和密碼,並向他們發送每個請求。
我對Sitecore以外的.NET沒有太多經驗。
也許這可以幫助 - http://stackoverflow.com/questions/4783556/display-original-sitecore- username-instead-whats-currently-typed-in – Gabbar 2015-02-23 21:16:52
請提供一些代碼,以便處理您的票證,並提供錯誤詳情 – 2015-02-25 08:47:19