Web.config कनेक्शन स्ट्रिंग में एस्केप उद्धरण


87

मेरे वेब कॉन्फ़िगरेशन में कनेक्शन स्ट्रिंग है:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />

जैसा कि आप देखते हैं, पासवर्ड में एक उद्धरण चिह्न (") है (अन्य विभाग से दिया गया है। मैं इस db उपयोगकर्ताओं के पासवर्ड को नहीं बदल सकता)।

मुझे इस कनेक्शन स्ट्रिंग में बोली से कैसे बचना है?

Btw: मैंने पहले ही & quot; स्ट्रिंग में। यह काम नहीं किया - ado.net को तब एक ArgumenException मिली: "इनिशियलाइज़ेशन स्ट्रिंग का प्रारूप इंडेक्स 57 पर शुरू होने वाले विनिर्देश के अनुरूप नहीं है।" 57 वह जगह है जहाँ & quot; मेरे कनेक्शन स्ट्रिंग में है। मैंने पासवर्ड के भाग को घेरने की भी कोशिश की - 'या तो काम नहीं किया।

इसके अलावा "" और \ "की कोशिश की - web.config तब पार्स नहीं किया जा सकता है।

समाधान के लिए धन्यवाद:

मुझे दोहरे उद्धरण से बचने और एकल उद्धरणों में पासवर्ड डालने की आवश्यकता थी:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" providerName="System.Data.SqlClient" />

जवाबों:


109

इससे बचने के &quot;बजाय इस्तेमाल करें "

web.config एक XML फ़ाइल है जिससे आपको XML भागने का उपयोग करना चाहिए।

connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word"

इस फोरम थ्रेड को देखें ।

अपडेट :

&quot;काम करना चाहिए, लेकिन जैसा कि यह नहीं है, क्या आपने .NET के लिए कुछ अन्य स्ट्रिंग एस्केप दृश्यों की कोशिश की है? \"और ""?

अपडेट 2:

कनेक्शन के लिए एकल उद्धरण आज़माएं:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass"word'

या:

connectionString='Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word'

अपडेट 3:

से MSDN (SqlConnection.ConnectionString संपत्ति):

उन मानों को शामिल करने के लिए जिनमें अर्धविराम, एकल-उद्धरण वर्ण या डबल-उद्धरण वर्ण होते हैं, मान को दोहरे उद्धरण चिह्नों में संलग्न किया जाना चाहिए। यदि मान में अर्धविराम और डबल-उद्धरण वर्ण दोनों हैं, तो मान एकल उद्धरण चिह्नों में संलग्न किया जा सकता है।

इसलिए:

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'"

समस्या web.config के साथ नहीं है, लेकिन कनेक्शन स्ट्रिंग का प्रारूप है। एक कनेक्शन स्ट्रिंग में, यदि आपके पास एक "मूल्य (कुंजी-मूल्य जोड़ी) में है, तो आपको मूल्य को संलग्न करना होगा '। तो, जबकि Password=somepass"wordकाम नहीं करता है, Password='somepass"word'करता है।


यह काम नहीं करता है। यह सामान्य रूप से काम करेगा, अगर यह सादे xml में था, लेकिन एक विशेषता मूल्य के भीतर नहीं।
सेबस्टियन पीआर गिंगटर

@ सेबेस्टियन पीआर गिंगटर - अजीब बात है कि यह काम नहीं करता है। क्या आपने अन्य भागने के दृश्यों की कोशिश की?
उबले हुए जूल

हाँ। संपूर्ण Web.config को "" और \ "का उपयोग करते समय पार्स नहीं किया जा सकता। & quot; स्ट्रिंग के भीतर" के साथ प्रतिस्थापित नहीं किया गया है और क्वेरी स्ट्रिंग को निर्दिष्ट त्रुटि के कारण पार्स नहीं किया जा सकता है। अगर यह इतना आसान होता तो मैं यहाँ नहीं पूछी होती ;-)
सेबेस्टियन पीआर गिंगटर

1
@ सेबेस्टियन पीआर गिंग्टर - यहाँ के लोग इस बात का अनुमान नहीं लगा सकते हैं कि आपने क्या प्रयास किया है और आप क्या जानते हैं। आपको अपने प्रश्न में (जैसे अब आपके पास) इस तरह के विवरणों को शामिल करने की आवश्यकता है।
Oded

आपके web.config का उपयोग किस एन्कोडिंग से होता है?
मैथ्यू एबट

61
connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass&quot;word"

चूंकि web.config XML है, इसलिए आपको पाँच विशेष वर्णों से बचना होगा:

&amp;-> & एम्परसेंड, U + 0026
&lt; -> < बाएं कोण ब्रैकेट, कम-से-साइन, U + 003C
&gt; -> > राइट एंगल ब्रैकेट, साइन-अप से अधिक, U + 003E
&quot; -> " उद्धरण चिह्न, U + 0022
&apos; - ' एपोस्ट्रोफ, U + 0027

+ कोई समस्या नहीं है, मुझे लगता है।


Duc Filan कहते हैं: आपको अपना पासवर्ड एकल उद्धरण के साथ लपेटना चाहिए ':

connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'"

यह मेरे लिए ampersand था, एक पासवर्ड में, web.config में संग्रहीत। जाहिर है, जबकि एक ही समय में नीचे ट्रैक करने के लिए बहुत गैर-स्पष्ट किया जा रहा है। वह त्रुटि जो एक Azure वेबसाइट आपको देती है जब यह web.config में होती है - "पृष्ठ को प्रदर्शित नहीं किया जा सकता क्योंकि आंतरिक सर्वर त्रुटि हुई है।" यह त्रुटि लॉग के लिए कुछ भी लिखने के लिए प्रकट नहीं होता है। प्रश्न के लिए ओपी और इस अनुस्मारक के लिए धन्यवाद।
टिमोथी ली रसेल

वर्ग कोष्ठक के बारे में क्या? ([])
डिजीआनिस याफिमौ

और ;चरित्र?
किकेनेट


1

ऊदबिलाव का उत्तर लगभग पूरा हो चुका है। बस एक चीज जोड़ना है।

  1. एस्केप एक्सएमएल स्पेशल चार्ज़ जैसे इमानुएल ग्रीको ने कहा।
  2. पासवर्ड को एकल उद्धरणों में रखें जैसे कि Oded said
  3. (यह एक नया है) एक और एकल टिक ( रेफरी ) के साथ एकल टिक से बच

यह पासवर्ड होना = "'; यह एक वैध कनेक्शन स्ट्रिंग होना चाहिए:

connectionString='Server=dbsrv;User ID=myDbUser;Password='&quot;&amp;&amp;;'

मुझे लगता है कि आपका मतलब password='''';वैध है। लेकिन आपका सुझाव ही एकमात्र ऐसा काम है जो मेरे लिए काम करता है। यह वास्तव में अन्य भागने की योजनाओं में भी उपयोग किया जाता है।
ब्लूबारॉन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.