2008-10-24 13 views
9

सदस्यता प्रदाता को ओवरराइड करते समय और इसे सीधे कॉल करते समय, सेटिंग्स के लिए कॉन्फ़िगरेशन फ़ाइल को मैन्युअल रूप से देखे बिना प्रारंभिक विधि के NameValueCollection कॉन्फ़िगरेशन पैरामीटर को भरने का कोई तरीका है?कस्टम सदस्यताप्रदाता विधि प्रारंभ करें

स्पष्ट रूप से यह प्रारंभ एएसपीनेट द्वारा बुलाया जा रहा है और कॉन्फ़िगर कहीं भी भर रहा है। मैंने अपना खुद का सदस्यता प्रदाता लागू किया है और यह नियंत्रण में निर्माण के माध्यम से ठीक काम करता है। मैं अपने प्रदाता का एक नया उदाहरण बनाना चाहता हूं और इसे सीधे कॉल करना चाहता हूं, लेकिन मैं वास्तव में सदस्यता प्रदाता के लिए .config को पार्स नहीं करना चाहता, यह कनेक्शन स्ट्रिंग नाम है और फिर कनेक्शन स्ट्रिंग अगर यह पहले से ही हो रहा है कहीं।

उत्तर

20

tvanfosson- मदद के लिए धन्यवाद। (अगर मेरे पास 15 अंक आवश्यक हैं तो मैं आपको वोट दूंगा)

आपके लिंक से मैं इसे समझने में सक्षम था। यह पता चला प्रारंभ प्रक्रिया को दूसरा पैरामीटर प्रदाता से मानकों की सूची थी और निम्नलिखित तरीके से पहुँचा जा सकता है:

string configPath = "~/web.config"; 
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath); 
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership"); 
ProviderSettingsCollection settings = section.Providers; 
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters; 
Initialize(section.DefaultProvider, membershipParams); 
+4

अब आपके पास उन 15 आवश्यक अंक हैं :) – Abel

7

यह सुनिश्चित नहीं है कि आप एक नया क्यों बनाना चाहते हैं, लेकिन यदि आप इसे स्वयं बनाते हैं, तो आपको वेब कॉन्फ़िगरेशन पढ़ने की आवश्यकता होगी और कक्षाओं के बाहर किए जाने के रूप में प्रारंभिक() को पास करने के लिए मूल्य प्राप्त करना होगा। मैं, यकीन है कि हालांकि, पहले से ही है कि वहाँ इस खंड के लिए एक अनुभाग हैंडलर तो यह कर का मामला होना चाहिए:

MembershipSection section = WebConfigurationManager.GetSection("membership"); 

फिर अपने प्रदाता खोजने के लिए और उसके गुण तक पहुँचने NameValueCollection के निर्माण के लिए। मुझे नहीं लगता कि आपको कॉन्फ़िगरेशन सेक्शन को पार्स करने के लिए कोई कोड लिखना होगा।

एमएसडीएन में MembershipSection दस्तावेज यहां है। वहां से नीचे ड्रिल करें।

+1

मैंने कोशिश की और अनुभाग शून्य है। मैंने WebConfigurationManager को देखा और मेरे पास ऐपसेटिंग और कनेक्शन स्ट्रिंग्स है। क्या कोई कारण सदस्यता प्रदर्शित नहीं हो रही है? मैं इसे web.config में देखता हूं? – JHORN

0

आप MembershipProvider का उदाहरण नहीं बनाना चाहिए किसी भी मामले में। यह मानक एएसपीनेट आधारभूत संरचना द्वारा निर्माण और प्रारंभिकरण कर रहा है। आप इसे इस तरह से कोड द्वारा एक्सेस कर सकते हैं:

var ग्राहकMembership = सदस्यता। प्राइवडर;

+0

यह मेरे लिए काम किया! और यह सुनिश्चित करने का एकमात्र तरीका है कि आपका ओवरराइड करने योग्य प्रारंभिक कार्य चलता है। – JeffJeffery

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