मैं साइटकोर प्रकाशन API का उपयोग कर अपने साइटकोर मास्टर डीबी का अनुसूचित प्रकाशन चला रहा हूं। मैं दिन जो निम्नलिखित कोड (थोड़ा पठनीयता के लिए सघन) चलाता दौरान अनुसूचित अंतराल पर एक वेब सेवा को कॉल:साइटकोर ने सी # एपीआई से ड्राफ्ट आइटम क्यों प्रकाशित किए हैं, और मैं इसे ऐसा कैसे रोकूं?
// grab the root content node from sitecore
Item contentNode = dbSource.Items[ID.Parse("{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}")];
PublishOptions options = new PublishOptions(sourceDatabase, targetDatabase, PublishMode.Smart, lang, DateTime.Now);
options.RootItem = contentNode;
options.Deep = true;
Publisher p = new Publisher(options);
p.PublishAsync();
जब हम ऊपर कोड यह सामग्री नोड में सब कुछ, सभी सन्तान सहित प्रकाशित करता है, की परवाह किए बिना चलाने वर्कफ़्लो राज्य। ऐसा लगता है कि यह पूरी तरह से वर्कफ़्लो को अनदेखा कर रहा है। यह वह नहीं है जो हम बाद में हैं, और हमारी लाइव वेबसाइट पर कई समस्याएं पैदा कर रहे हैं।
यह सामग्री नोड में सब कुछ प्रकाशित करता है हम Sitecore डेस्कटॉप के भीतर से ही कार्रवाई चलाते हैं सभी सन्तान, हैं कि सहित, प्रकाशन योग्य (अंतिम कार्यप्रवाह चरण में यानी)। यह पेड़ में किसी भी आइटम को प्रकाशित नहीं करता है जो अभी भी मसौदे मोड में हैं। यह आवश्यक बाहवीर है।
मैं कथन का उपयोग निम्नलिखित के साथ उपरोक्त कोड में दर्ज करके एक गैर-व्यवस्थापक उपयोगकर्ता के रूप में कोड को लागू करने की कोशिश की है:
string userName = @"sitecore\******";
Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);
user.RuntimeSettings.IsAdministrator = false;
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
...
}
दुर्भाग्य से यह कोई प्रभाव नहीं पड़ा है।
क्या कुछ स्पष्ट है जो मैंने याद किया है, या क्या मैं इसे सही कर रहा हूं और साइटकोर यह गलत कर रहा है? क्या कोई मदद कर सकता है?
मैंने देखा कि अजीब बात यह भी है कि लाइव डेटाबेस पर देखे जाने वाले मसौदे आइटम फ़ील्ड या मेटा डेटा के मामले में साइटकोर डेस्कटॉप में बिल्कुल कुछ नहीं दिखा रहे थे। उन्होंने यह भी एक चेतावनी दिखा रहे थे कि अंग्रेजी "वर्तमान आइटम में एक संस्करण नहीं है":। अंग्रेजी "
आपको इसके लिए सेवा की आवश्यकता नहीं है। साइटकोर में इसका अपना शेड्यूलर है। –
धन्यवाद @ हॉर्समन, लेकिन मुझे लगता है कि शेड्यूलर में निर्मित साइटकोर एक अंतराल पर काम करता है, जो ASP.NET AppPool रीसायकल करते समय आसानी से रीसेट कर सकता है। यह प्रकाशन के लिए आपके पास होने वाले किसी भी उचित शेड्यूल को गड़बड़ कर देगा और गड़बड़ कर देगा। नतीजतन, हम एक वेब सेवा का उपयोग करते हैं जिसे विंडोज टास्क शेड्यूलर से शेड्यूल पर बुलाया जाता है। – theyetiman