2010-06-09 11 views
6

एक बात जिसने मुझे SharePoint2007 के बारे में पागल कर दिया है, वह निश्चित रूप से किसी साइट या साइट संग्रह पर लागू होने वाली परिभाषित सेटिंग्स की स्पष्ट अक्षमता है, न कि सामग्री। मेरा मतलब है, आपके पास साइट लोगो, साइट का नाम, और कई अन्य चीजों जैसी कुछ पूर्व-परिभाषित सेटिंग्स हैं, लेकिन नई प्रकार की सेटिंग्स जोड़ने के लिए कहीं भी ऐसा प्रतीत नहीं होता है।SharePoint साइट में साइट-स्तरीय वैश्विक चर स्टोर करने का एक उचित तरीका क्या है?

जिस एप्लिकेशन पर मैं काम कर रहा हूं, वह कई प्रकार के "प्रोजेक्ट साइट संग्रह" बनाने में सक्षम होने की आवश्यकता है, जो सभी मूल टेम्पलेट का पालन करते हैं, लेकिन कुछ अतिरिक्त सेटिंग्स जो विशेष रूप से उस साइट संग्रह पर लागू होती हैं और वह अकेली होती है। मानक साइट नाम के अतिरिक्त हमें परियोजना संख्या, परियोजना का नाम, और ग्राहक नाम परिभाषित करने की भी आवश्यकता है। और हमारे कुछ ग्राहकों के अनुरोधों को देखते हुए, हम एक ऐसे बिंदु तक पहुंचते हैं जहां हमारे पास कॉन्फ़िगर करने योग्य सेटिंग्स होनी चाहिए जो कुछ वर्कफ़्लो कैसे काम करती है, जैसे फाइलें अक्षरों या संख्याओं के साथ चिह्नित हों।

हमारा वर्तमान समाधान, जिसे मैं संकोच करता हूं, को SharePoint सर्वर पर एक XML फ़ाइल संग्रहीत करना है। इस फ़ाइल में रूट साइट के यूआरएल द्वारा पहचाने गए प्रत्येक साइट संग्रह के लिए एक नोड शामिल है। नोड के अंदर उन सभी तत्व हैं जिन्हें उस साइट संग्रह के लिए परिभाषित करने की आवश्यकता है। जब हमें उनकी आवश्यकता होती है, तो हमें इसे लोड करने और डेटा पुनर्प्राप्त करने के लिए प्रत्येक बार एक्सएमएल फ़ाइल (जिसे हमेशा SPSecurity.RunWithElevatedPrivileges को सर्वर पर फ़ाइलों तक पहुंचने के लिए) की आवश्यकता होती है। बहुत सी स्वचालित प्रक्रियाएं हैं जिन्हें इसे करना होगा, और मैं इस विधि की स्थिरता के बारे में संकोच करता हूं जब हम सैकड़ों साइटों तक पहुंचते हैं जिसमें हजारों फाइलें हजारों वर्कफ़्लोज़ चलती हैं, जो सभी इस फ़ाइल तक पहुंचना चाहते हैं। हो सकता है कि वे निराश चिंताएं हों, लेकिन मैं कुछ वर्षों में हर चीज को तोड़ने से जोखिम की बजाय चिंता करता हूं।

मैं एसपीवेब ऑब्जेक्ट में देख रहा था और AllProperties हैशटेबल मिला। यह सिर्फ ऐसी चीज की तरह दिखता है जो काम कर सकता है, लेकिन मुझे नहीं पता कि इसे संशोधित करना कितना सुरक्षित है। मैंने एमएसडीएन और डब्लूएसएस एसडीके दोनों के माध्यम से पढ़ा लेकिन कुछ भी नहीं मिला जो AllProperties में पूरी तरह से नई संपत्तियों को जोड़ने पर स्पष्ट हुआ। क्या इस तरह की चीज़ के लिए AllProperties का उपयोग करना सुरक्षित है? या फिर एक और विशेषता है जो मुझे याद आ रही है, जो साइट संग्रह या साइट स्कोप पर वैश्विक चर की अवधारणा को संभालने में सक्षम हो सकती है?

उत्तर

5

यह करने के लिए सुझाया गया तरीका SPFarm, SPWeb.RootWeb (साइट संग्रह के लिए), SPWeb, SPList आदि की .properties के माध्यम से PropertyBag (कुंजी/मान जोड़े) उपयोग करने के लिए प्रयोग किया जाता जिस दायरे की आपको आवश्यकता है)।

MSDN - Managing Custom Configuration Options for a SharePoint Application

MSDN - The SharePoint Guidance Library

के हिस्से के रूप में एक उत्पादन के लिए तैयार कोड उपलब्ध देखें Hierarchical configuration manager

यह आपको पढ़ने/इन मूल्यों को लिखने के लिए कार्यक्रम संबंधी पहुँच देता है। यदि आप मार्गदर्शन पुस्तकालय का उपयोग किए बिना ऐसा करना चाहते हैं तो आप निम्न कोड की तरह कुछ उपयोग करेंगे।

SPWeb web = SPContext.Current.Web; 
if (web.Properties.ContainsKey("MyProperty")) 
    string myProperty = web.Properties["MyProperty"]; 

आप एक यूआई व्यवस्थापक आसानी से स्थापित करने के लिए मूल्यों को तो या तो SharePoint Designer (urghhhh!) या SharePoint Property Bag Settings की तरह कुछ

+0

मैं इन मूल्यों को स्थापित करने के लिए एक कस्टम आवेदन पेज लिखा अनुमति देना चाहते हैं, तो शुक्र है कोई SharePoint हैं डिजाइनर। लेखों के लिए धन्यवाद, यह न केवल विकल्पों को हाइलाइट करता है बल्कि ऑलप्रोपर्टीज बनाम गुणों की प्रयोज्यता को स्पष्ट करने में भी मदद करता है। यह जाने के रास्ते की तरह दिखता है! –

+0

आपके लिए अधिक भ्रम - http://trentacular.com/2009/06/sharepoint-the-wicked-spwebproperties-propertybag/ यकीन नहीं है कि मैं लेखक से सहमत हूं - मुझे लगता है कि संपत्तियां जाने का तरीका है - ध्यान देने योग्य मामला संवेदनशीलता हालांकि। – Ryan

1

प्रॉपर्टीबैग का उपयोग कुंजी/मूल्य प्रकार गुणों को संग्रहीत करने के लिए किया जा सकता है। मुझे लगता है कि यह आपके उद्देश्यों के लिए क्या प्रतीत होता है।

व्यक्तिगत रूप से मुझे क्रॉस-साइट संग्रह गुणों (जैसे डीबी कनेक्शन स्ट्रिंग्स) की अधिक आवश्यकता है और मैं उनको संग्रहीत करने के लिए this का उपयोग करता हूं। (पर निर्भर करता है

संबंधित मुद्दे