2013-01-24 9 views
7

पहला पोस्ट, मैं एक पूर्ण नेट/सी # नौसिखिया गहरे छोर पर फेंक दिया गया हूँ!क्या आप रनटाइम पर कनेक्शनस्ट्रिंग कॉन्फ़िगरेशन मान बदल सकते हैं? या ... क्या मुझे भी इसकी आवश्यकता है?

मुझे काम पर जाने वाले किसी व्यक्ति के कारण सी # wed आवेदन मिला है और मैं बैंडविड्थ वाला एकमात्र व्यक्ति हूं! लेकिन नेट नहीं, सी # ज्ञान!

ऐप का उपयोग दुनिया भर के विभिन्न साइटों पर लोगों द्वारा किया जाता है। वे कॉर्पोरेट लॉगिन विवरण का उपयोग करके लॉग इन करते हैं और इस तरह वे विभिन्न सर्वरों में लॉग इन करते हैं, जहां वे स्थित हैं, (यूरोप, अमेरिका या भारत)।

वह व्यक्ति जिसने ऐप लिखा था, उस स्थान पर निर्भर करता है कि कनेक्शन के आधार पर web.config में कनेक्शनस्ट्रिंग को कैसे स्विच किया जाए, इसलिए प्रत्येक डोमेन के लिए पूरे ऐप को डुप्लिकेट किया गया! ऐप के प्रत्येक डुप्लीकेट संस्करण के लिए web.config में एकमात्र आईपी पता होने के साथ ही भिन्नता! फिर एक साधारण वेब फ्रंट पेज था जो उपयोगकर्ता को ऐप के "उनके" संस्करण में ले गया जहां उन्होंने कहा कि वे कहां दुनिया में थे!

पहली चीज जो मैं करना चाहता हूं वह बनाए रखने के लिए एक संस्करण में स्थानांतरित करना है, इसलिए मुझे कनेक्शन स्ट्रिंग को स्विच करने या लॉगिन करने में सक्षम होना चाहिए?

मैंने अपने लॉग इन क्लास से कनेक्शन कनेक्शन (web.config में परिभाषित) में कैसे काम किया है, यह जानने के लिए कई दिनों बिताए हैं, केवल वेब.कॉन्फिग में सेट मानों को खोजने के लिए केवल पढ़ने के लिए प्रतीत होता है, इसलिए मैं कर सकता हूं उन्हें बदल नहीं है।

तो मुझे लगता है कि पहला सवाल यह है कि, क्या मैं गलत पेड़ को भड़क रहा हूं? क्या मैं बस सभी जानकारी सेट कर सकता हूं कि AspNetActiveDirectoryMembershipProvider (बाद में कोड देखें) की आवश्यकता है और इसे मेरे लॉगिन क्लास से कॉल करें? या कनेक्शन कनेक्शन है Ipso वास्तव में .NET/C# में कनेक्शन स्थापित करने का तरीका है? इसलिए मुझे रनटाइम पर मान को बदलने/निर्दिष्ट/जोड़ने का तरीका जानने की आवश्यकता है।

तीन संभावनाओं मैं के बारे में सोच सकते हैं: -

  1. बदलें मेरी लॉग इन वर्ग से मेरी web.config में ADService के लिए ConnectionString (पहले एक मैं के साथ एक हल्ट के लिए जमीन है है)?

  2. बदलें AspNetActiveDirectoryMembershipProvider क्या उपयोग करता है, इसलिए मेरे लॉगिन क्लास से जादूगर रूप से इसे web.config में परिभाषित EMEA_ADService या PACIFIC_ADService का उपयोग करने के लिए मिलता है?

  3. क्या एक नया कनेक्शन परिभाषित करना संभव है स्ट्रिंग और कॉल करें AspNetActiveDirectoryMembership मेरे लॉगिन क्लास से सभी को प्रदान करें, इस कनेक्शन के लिए web.config का उपयोग न करें?

यहाँ यह जहाँ तक मैं में मिल गया है है Web.config

<connectionStrings> 
    <add name="ADService" connectionString="LDAP://12.345.67.8" />   *---- Original ConnectionString (IP address changed)----* 
    <add name="EMEA_ADService" connectionString="LDAP://12.345.67.8" />  *---- Added by me playing around unsuccessfully! ----* 
    <add name="PACIFIC_ADService" connectionString="LDAP://12.345.67.9" /> *---- Added by me playing around unsuccessfully! ----* 
    ~ 
    </connectionStrings> 

<authentication mode="Forms"> 
     <forms loginUrl="~/Login.aspx" timeout="2880" />  *---- The background class for this popup (Login.aspx.cs) is where I'm currently trying to affect ConnectionString----* 
    </authentication> 
                  *---- Pretty sure this is the bit that actually does the login verification----* 
    <membership defaultProvider="AspNetActiveDirectoryMembershipProvider"> 
     <providers> 
     <clear /> 
     <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,   System.Web, Version=4.0.0.0, Culture=neutral,   PublicKeyToken=12345678" connectionStringName="ADService" applicationName="/." description="ADService" /> 
     </providers> 
    </membership> 

से मेरे/उसकी web.config फ़ाइल का एक सा और मेरे लॉग इन वर्ग

कलमों है मेरी यह पता लगाने से पहले कक्षा कि मैं ConnectionString को बदलने में सक्षम नहीं दिखता! Login.aspx.cs

public partial class Login : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings; //this is now working :) 
     string userDomain = Environment.UserDomainName; //Probably don't need this, it seems to give the login domain on the machine. Don't know yet if that will be the users machine or the server the app runs on? 
     if (connections.Count != 0) 
     { 
      foreach (ConnectionStringSettings connection in connections) 
      { 
       string testname = connections["ADService"].Name; 
       string testConnectionString = connections["ADService"].ConnectionString; 
       connections["ADService"].ConnectionString = "LDAP://12.345.67.9"; 
       testConnectionString = connections["ADService"].ConnectionString; 

से

कलमों किसी भी संकेत बहुत स्वागत किया जाएगा!

पीएस मैंने काम पर एक .Net/C# कोर्स का अनुरोध किया है!;)

+0

क्या आपके पास DNS नहीं है? – BlackICE

+0

मैं * इसलिए * क्षमा चाहता हूँ। शुभकामनाएँ। – MikeTheLiar

+0

आप फ्लाई पर एक नाम इकट्ठा कर सकते हैं, इसलिए यदि आप यह निर्धारित कर सकते हैं कि आप कहां हैं, उदा। "प्रशांत", फिर आप सही कनेक्शन स्ट्रिंग प्राप्त करने के लिए 'कनेक्शन [स्थान +' _ADService '] 'का उपयोग कर सकते हैं। – HABO

उत्तर

5

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

asp.net mvc multiple connection strings

Handling multiple connection strings in ONE DataAccess Layer

http://msdn.microsoft.com/en-us/library/aa479086.aspx

माइक्रोसॉफ्ट लेख विशेष रूप से दिलचस्प है। मुझे लगता है कि आप छड़ी के छोटे छोर से फंस गए हैं! शुभकामनाएँ!

+0

सहायता के लिए धन्यवाद। मुझे लगता है कि जवाब यह है कि मुझे पहले .NET और C# के बारे में कुछ बातें सीखने की जरूरत है! :) तो परिवर्तन को बैकलॉग पर वापस जाना होगा जब तक कि मेरे पास इस माहौल में कम से कम एक अस्पष्ट विचार न हो, मैं क्या करना चाहता हूं! lol – user2008415

+0

@ user2008415 आपका स्वागत है! आप बल्ले से कुछ चुनौतीपूर्ण सामानों से निपट रहे हैं और मुझे आशा है कि आपको वह सभी उत्तर मिलेंगे जिन्हें आप ढूंढ रहे हैं! शुभकामनाएं और मेरा जवाब स्वीकार करने के लिए धन्यवाद। –

0

वेब.कॉन्फिग को रनटाइम में संशोधित नहीं किया जा सकता है। मैं लोगों को लॉगिन करने के लिए कहां से लॉगिन करना चाहता हूं, यह चुनने के लिए वेबसाइट पर लॉगिन लिंक या कंबोबॉक्स के माध्यम से किसी प्रकार का ध्वज सेट करने का सुझाव दूंगा। यह पता लगाने के लिए सर्वर का काम नहीं है कि उपयोगकर्ता क्या करना चाहता है।

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