से काम करती है, मैंने हाल ही में Azure पर अपनी पहली वेबसाइट सेट की है। अभी के लिए, यह मूल रूप से घर और खाता नियंत्रकों के साथ मानक एमवीसी 4 टेम्पलेट वेबसाइट है। Azure में, मेरे पास एक वेबसाइट है, और एक SQL डेटाबेस है। मैं एसएसएमएस से एसक्यूएल एज़ूर डेटाबेस तक पहुंच सकता हूं, और अपनी वेबसाइट द्वारा उपयोग किए जाने वाले लॉगिन और उपयोगकर्ता को स्थापित कर सकता हूं।Azure वेबसाइट से SQL Azure DB तक नहीं पहुंच सकता है, भले ही समान कनेक्शन स्ट्रिंग स्थानीय वेबसाइट
मेरे विकास के माहौल में, मेरे विकास डेटाबेस पर इशारा करते हुए, मैं/खाता/लॉगिन पृष्ठ जुर्माना एक्सेस कर सकता हूं। मैं पंजीकरण कर सकता हूं, और मैं अपने स्थानीय डीबी में नया उपयोगकर्ता देख सकता हूं। मैं अपने एसक्यूएल एज़ूर डीबी पर अपनी विकास वेबसाइट को इंगित करने के लिए कनेक्शन स्ट्रिंग भी बदल सकता हूं, और फिर मैं/खाता/लॉगिन कर सकता हूं और नए उपयोगकर्ताओं को पंजीकृत कर सकता हूं। मैं एसक्यूएल एज़ूर डीबी में उन नए उपयोगकर्ताओं को देख सकता हूं।
समस्या तब होती है जब मैं वेबसाइट को Azure पर तैनात करता हूं। मेरे पास मेरी प्रकाशन सेटिंग फ़ाइल से जुड़ी एक ट्रांसफॉर्म कॉन्फ़िगरेशन है, और साइट को एज़ूर में प्रकाशित करते समय आउटपुट विंडो में देख सकता है कि यह ट्रांसफॉर्मेशन तैनाती के दौरान लागू होता है। यह स्थानीय विकास डीबी कनेक्शन स्ट्रिंग को SQL Azure कनेक्शन स्ट्रिंग में संशोधित करता है। मैंने यह भी सत्यापित किया है कि यह SQL Azure कनेक्शन स्ट्रिंग वास्तविक web.config फ़ाइल में तैनात है (वास्तविक वेब.कॉन्फिग को पुनर्प्राप्त करने के लिए FileZilla FTP का उपयोग करके)। मैं [mysite] .AzureWebsites.net पर मेरी साइट के मुख पृष्ठ पर पहुंच सकते हैं, लेकिन जब मैं लॉगिन लिंक पर क्लिक करें/खाता/लॉग इन पृष्ठ पर जाने के, मैं निम्नलिखित त्रुटि मिलती है:
[ArgumentException: Format of the initialization string does not conform to specification starting at index 0.]
System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) +5313265
System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +124
System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +95
System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +59
System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +24
System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +167
System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) +61
System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +66
System.Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection) +122
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) +32
System.Data.Entity.Internal.LazyInternalConnection.Initialize() +127
System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName() +13
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +346
System.Data.Entity.Internal.InternalContext.CreateObjectContextForDdlOps() +17
System.Data.Entity.Database.Exists() +36
[MyWebsite].Filters.SimpleMembershipInitializer..ctor() +105
यह लगता है यह सुझाव देने के लिए कि मेरे कनेक्शन स्ट्रिंग के साथ कोई समस्या है, लेकिन जैसा कि मैंने पहले उल्लेख किया था, यह वही कनेक्शन स्ट्रिंग मेरी स्थानीय वेबसाइट से काम करती है।
मैंने माना है कि यह समस्या फ़ायरवॉल से संबंधित हो सकती है, लेकिन मैंने Azure प्रबंधन पोर्टल में सेटिंग्स की जांच की है, और Windows Azure Services फ़ायरवॉल नियम उस पहुंच को अनुमति देने के लिए लागू किया गया है। साथ ही, मैंने एसक्यूएल एज़ूर डीबी तक पहुंचने के लिए अपनी स्थानीय मशीन के लिए फ़ायरवॉल नियम को हटाने का प्रयास किया है, यह देखने के लिए कि मुझे एक समान अपवाद मिलेगा, लेकिन अपवाद फेंकना बहुत स्पष्ट रूप से फ़ायरवॉल से संबंधित था।
मैंने Azure प्रबंधन पोर्टल के माध्यम से SQL Azure कनेक्शन स्ट्रिंग को जोड़ने का भी प्रयास किया है (हालांकि मुझे प्रदाता निर्दिष्ट करने का तरीका नहीं देखा गया था) - कहने की जरूरत नहीं है, मुझे वही मिला "प्रारंभिकरण का प्रारूप ... "ऊपर उल्लिखित अपवाद। web.config में
मेरे कनेक्शन स्ट्रिंग निम्न स्वरूप में है:
<add name="[my connection name]"
connectionString="Server=tcp:abc123.database.windows.net,1433;Database=[my database];User ID=[my login]@abc123;Password=[my password];Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
providerName="System.Data.SqlClient" />
कोई सुझाव बहुत स्वागत किया जाएगा।
उपयोगकर्ता कॉन्टेक्स्ट कन्स्ट्रक्टर पर अच्छा पकड़। –
क्या आप वेब परिनियोजन डेटाबेस अद्यतन का उपयोग कर रहे हैं? इस पर एक चेकबॉक्स है कि आप प्रोजेक्ट में कनेक्शन स्ट्रिंग जोड़ना चाहते हैं या नहीं। – kvetis