उपयोगकर्ता 'IIS APPPOOL \ ASP.NET v4.0' के लिए लॉगिन विफल


432

मेरे पास एक वेब प्रोजेक्ट है (C # Asp.Net, EF 4, MS SQL 2008 और IIS 7) और मुझे इसे IIS 7 पर स्थानीय स्तर पर स्थानांतरित करने की आवश्यकता है (फिलहाल CASSINI के साथ ठीक काम करता है)।

स्थानीय रूप से IIS में मैं Default Web Siteअपनी तैनाती के साथ है। मेरी तैनाती और Default Web Siteपूल ASP.NET v4.0 पर हैं (सेटिंग्स के लिए छवि देखें) पूल लक्ष्य फ्रेमवर्क 4 मेरी वेब परियोजना के रूप में। पूल सेटिंग्स साइट पर जाते समय, ब्राउज़र पृष्ठ नहीं दिखाता है और ब्राउज़र को इसके बजाय पृष्ठ को डाउनलोड करने देता है।

मेरे पास आईआईएस पर स्थानीय रूप से चलने वाली अन्य परियोजनाएं हैं और वे बिना किसी समस्या के काम करते हैं (लेकिन वे एंटिटी फ्रेमवर्क का उपयोग नहीं करते हैं)।

इवेंट लकड़हारा का उपयोग कर मैं नीचे के रूप में त्रुटियों को देखता हूं:

Exception information: 
    Exception type: EntityException 
    Exception message: The underlying provider failed on Open.
   at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)


    Login failed for user 'IIS APPPOOL\ASP.NET v4.0'.
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.SqlClient.SqlConnection.Open()
       at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

संबंधित प्रश्न

अद्यतन: आप इस सवाल पर संसाधनों में पढ़ सकते हैं कि अनुमतियाँ एमएस SQL ​​2008 पर मैन्युअल रूप से दी जानी चाहिए, जैसा कि उनके उत्तर में स्पष्ट रूप से बताया गया है। IIS 7.5 और MS SQL 2008 R2 का उपयोग करना, मैन्युअल रूप से अनुमति देना आवश्यक नहीं होना चाहिए।


2
क्या आपने वेबसाइट फ़ोल्डर पर ऐप पूल पहचान की अनुमति दी है?
ईसाई

मुझे यकीन नहीं है, क्या आप मुझे बता सकते हैं कि यह कैसे करना है?
गिब्बो


वास्तव में, जैसा कि कहा जाता है, यह एक sql सुरक्षा मुद्दा हो सकता है। आप AppPool के लिए NT उपयोगकर्ता खाता सेट करने के लिए सर्वश्रेष्ठ हैं और फिर उस अनुमति को वेबसाइट फ़ोल्डर और SQL में उपयुक्त तालिकाओं को प्रदान करते हैं
क्रिश्चियन

1
@GibboK: मैं आपको यहाँ स्वीकृत उत्तर की समीक्षा करने और अधिक उपयुक्त उत्तर चुनने के लिए प्रोत्साहित करूँगा। स्वीकृत उत्तर कई लोगों को एक सुरक्षा ब्लैक होल में ले जा रहा है। हाँ यह काम करता है। नहीं, यह वास्तव में एक अच्छा विचार नहीं है। नीचे मेरी टिप्पणी देखो।
खर्चा

जवाबों:


595

ऐसा लगता है कि यह SQL सर्वर से कनेक्शन खोलने की कोशिश कर रहा है।

आपको डेटाबेस के लिए SQL सर्वर में लॉगिन जोड़ने IIS APPPOOL\ASP.NET v4.0और अनुमति देने की आवश्यकता है।

एसएसएमएस में, सर्वर के तहत, सुरक्षा का विस्तार करें, फिर लॉगइन पर राइट क्लिक करें और "न्यू लॉगिन ..." चुनें।

न्यू लॉगिन डायलॉग में, लॉगिन नाम के रूप में ऐप पूल में प्रवेश करें और "ओके" पर क्लिक करें।

यहां छवि विवरण दर्ज करें

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


8
धन्यवाद, मैंने वही किया जो आपको दुखी करता है, अब मुझे यह त्रुटि मिली: लॉगिन द्वारा अनुरोधित डेटाबेस "SiteNameExtension" को नहीं खोल सकता। लॉगिन विफल रहा। उपयोगकर्ता 'IIS APPPOOL \ DefaultAppPool' के लिए लॉगिन विफल हुआ।
जिबूको

76
बहुत महत्वपूर्ण: लॉग इन करने की कोशिश करने के लिए खोज को क्लिक न करें! यह पहचान नहीं करेगा, लेकिन यह काम करेगा। बस इसे IIS APPPOOL \ SimonsAppPoolName के रूप में लिखें। इस देखें stackoverflow.com/questions/1933134
Simon_Weaver

6
आईआईएस से 'पहचान' को 'लोकल सिस्टम' में बदलने के बजाय बेहतर है, जैसा कि अगले उत्तर में बताया गया है।
अल्ताफ पटेल

क्या यह कार्य तब हो सकता है जब आपका SQL सर्वर इंस्टेंस किसी अन्य होस्ट मशीन पर हो तो आपकी IIS होस्ट मशीन? क्योंकि मुझे एक ही समस्या को ठीक करने की आवश्यकता है, लेकिन SQL और IIS एक ही मशीन पर नहीं हैं। इसलिए उस नए उपयोगकर्ता के लिए विंडोज ऑथेंटिकेशन का उपयोग न करें
Segers-Ian

5
मेरे लिए उपयोगकर्ता जोड़ने के लिए 'IIS APPPOOL \ DefaultAppPool' था। फिर काम हुआ।
मार्सेल

343

आप ApplicationPoolIdentity को IIS7 -> एप्लिकेशन पूल -> उन्नत सेटिंग्स से बदल सकते हैं। एडवांस सेटिंग

ApplicationPoolIdentity के तहत आपको लोकल सिस्टम मिलेगा। इससे आपका एप्लिकेशन चल जाएगा NT AUTHORITY\SYSTEM, जो डिफ़ॉल्ट रूप से डेटाबेस के लिए एक मौजूदा लॉगिन है।

संपादित करें: इस सुझाव को लागू करने से पहले आपको सुरक्षा निहितार्थों पर ध्यान देना चाहिए और उन्हें समझना चाहिए।


51
@ GibboK, यदि आप सुरक्षा को लेकर चिंतित हैं, तो ऐसा न करें। देखें technet.microsoft.com/en-us/library/dd378907(v=WS.10).aspx
जेफ ओगाता

4
लोकल सिस्टम पहचान के रूप में ऐप पूल को चलाने के अलावा, मुझे डेटाबेस भूमिकाओं के लिए "NT AUTHORITY \ SYSTEM" उपयोगकर्ता का नक्शा भी बनाना था
Phil

31
इससे बदबू आती है। एक वेब ऐप के लिए सिस्टम अथॉरिटी को अनुदान देना आपदा के लिए एक नुस्खा है और बदमाशों को न केवल आपके वेब ऐप, बल्कि पूरे होस्टिंग सर्वर पर बदतमीजी करने का मौका देता है। सिर्फ इसलिए कि DB सिस्टम से लॉगिन स्वीकार करता है इसका मतलब यह नहीं है कि आपको अपना वेब ऐप सिस्टम के रूप में चलाना चाहिए। विंडोज़ डेस्कटॉप आपको सिस्टम के रूप में चलाने की अनुमति नहीं देगा (हुप्स के माध्यम से कूद के बिना)। इस अधिकार के साथ एक webapp चल रहा है एक बहुत, है वास्तव में बेवकूफ विचार। आपको डीबी को वर्तमान में लागू पहचान को स्वीकार करना चाहिए। मैं -100 अगर मैं कर सकता था। -1।
खर्च

8
सिस्टम प्रशासक की तुलना में अधिक विशेषाधिकार प्राप्त है। आपको अपने वेब सर्वर को उस स्तर तक पहुंचने वाली किसी भी चीज़ से नहीं चलाना चाहिए ।
अगस्त

1
मैं सिर्फ अतिथि खाते को व्यवस्थापक समूह का सदस्य बनाता हूं। सिंपल, क्लीन, सिक्योरिटी बुलिश के साथ कभी कोई समस्या नहीं है।

29

सुनिश्चित करें कि आपके पास ...

Trusted_Connection=false;

आपके संबंध में स्ट्रिंग


7
Trusted_Connection = कनेक्शन स्ट्रिंग में सही होने से IIS पहचान उपयोगकर्ता प्रोफ़ाइल के साथ SQL प्रमाणीकरण मान समाप्त हो जाएगा।
जेफ़ द बीयर

2
मेरे मामले को हटाने में: एकीकृत सुरक्षा = कनेक्शन स्ट्रिंग से सही इसे ठीक किया।
कार्लोस आर बलेबोना

मेरे लिए काम किया। @JefftheBear
D_Edet

26

मैंने निम्नलिखित छवि के रूप में sql का उपयोग करके इस समस्या को हल किया।

Db-> प्रॉपर्टीज -> अनुमति -> व्यू सर्वर अनुमति -> पर राइट क्लिक करें और फिर IIS APPPOOL\ASP.NET v4.0अनुमति चुनें और दें।

डाटाबेस


क्या उपरोक्त प्रक्रिया (और छवि) जो आप उस अनुप्रयोग पूल पहचान के लिए सर्वर स्तर अनुमतियों का वर्णन कर रहे हैं? एक अच्छे विचार की तरह आवाज़ नहीं करता है।
क्रिस वाल्श

2
यह उपयोगकर्ता पदक का हकदार है! कुछ भी मदद नहीं की लेकिन यह!
खतीब321 '

2
@ Khateeb321 बिल्कुल, आप अपने जवाब के लिए बहुत बहुत धन्यवाद।
अज़्क्सद्रेउवा

22

इस sql स्क्रिप्ट को चलाएँ

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [WebDatabaseUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'WebDatabaseUser'
GO

धन्यवाद, सबसे आसान तरीका;) +1
ज़ोल्फागारी

11

यदि कनेक्शन स्ट्रिंग में आपने निर्दिष्ट किया है:

User ID=xxx;Password=yyy

लेकिन कनेक्शन स्ट्रिंग में है:

Trusted_Connection=true;

SQL सर्वर Windows प्रमाणीकरण का उपयोग करेगा, इसलिए आपके कनेक्शन मूल्यों को अनदेखा किया जाएगा और ओवरराइड किया जाएगा (IIS पहचान उपयोगकर्ता प्रोफ़ाइल में निर्दिष्ट विंडोज खाते का उपयोग करेगा)। अधिक जानकारी यहाँ

यदि कनेक्शन स्ट्रिंग में वही लागू होता है:

 Integrated Security = true;

या

 Integrated Security = SSPI;

क्योंकि डेटाबेस सर्वर से कनेक्ट करने के लिए विंडोज ऑथेंटिकेशन का उपयोग किया जाएगा। अधिक जानकारी यहाँ


10

iis -> एप्लिकेशन पूल -> एप्लिकेशन में उपयोग किए गए अपने एप्लिकेशन पूल को खोजें

यहां छवि विवरण दर्ज करें

एप्लिकेशन राइट के लिए उपयोग किए गए अपने एप्लिकेशन पूल का चयन करें उन्नत सेटिंग्स का चयन करें

यहां छवि विवरण दर्ज करें

एप्लिकेशन पूल पहचान का चयन करें यहां छवि विवरण दर्ज करें

स्थानीय सिस्टम के रूप में निर्मित का चयन करें और ठीक क्लिक करें


7

मैं ApplicationPoolIdentity से नफरत करता हूं। मैं हमेशा AppPools पर खाते के रूप में एक Windows उपयोगकर्ता खाता सेट करता हूं।

जैसा कि adrift कहती है, यह एक डेटाबेस सुरक्षा मुद्दे की तरह ध्वनि करता है। तो एक NT उपयोगकर्ता खाता बनाएँ, इसे ASP.NET v4.0 AppPool में असाइन करें और फिर इसे SQL में वेबसाइट फ़ोल्डर और संबंधित तालिका (ओं) पर अनुमति दें।


क्षमा करें, पता नहीं यह कैसे करना है, क्या आप मुझे एक ट्यूटोरियल बता सकते हैं? इस पर आपकी मदद के लिए धन्यवाद
जिब्बो

2
ऐसा न करें, एक कारण यह है कि IIS ने ऐप पूल पहचान को बदल दिया, learn.iis.net/page.aspx/624/application-pool-identities
Julien Lebot

@ LeSnip3R टूट लिंक
Adaptabi

6

एकीकृत सुरक्षा का उपयोग न करें। उपयोगUser Id=yourUser; pwd=yourPwd;

इससे समस्या हल हो जाती है।


4

मेरे पास यह मुद्दा था और यह वास्तव में कुछ अलग होने के कारण था - मेरे डेटाबेस में 'IIS APPPOOL \ ASP.NET v4.0' उपयोगकर्ता था, लेकिन यह अभी भी काम नहीं कर रहा था।

मैंने हाल ही में अपने SQL सर्वर इंस्टॉल को अपग्रेड किया था और इस प्रक्रिया में उपयोगकर्ता लॉगिन से डिस्कनेक्ट हो गया था - इसलिए डेटाबेस के तहत 'IIS APPPOOL \ ASP.NET v4.0' था -> सुरक्षा -> उपयोगकर्ता कोई उपयोगकर्ता नहीं सुरक्षा के तहत नहीं -> लॉगिन।

सुरक्षा के लिए लॉगिन 'IIS APPPOOL \ ASP.NET v4.0' जोड़ें -> लॉगिन, SQL सर्वर ने इसे डेटाबेस में उपयोगकर्ता के लिए स्वचालित रूप से मैप किया (यह मैन्युअल रूप से किया जाता था) और समस्या को ठीक किया गया।


1
केवल जोड़ने के लिए ... बाईं ओर, अनुमतियाँ के तहत ... टिक db_writer और db_reader पर टिक करें; और उन अनुमतियों का उपयोग करने वाले डेटाबेस का चयन करें।
बेन्जिब

4

सबसे पहले आपको यह स्पष्ट करने की आवश्यकता है कि क्या आप विंडोज़ प्रमाणीकरण का उपयोग कर रहे हैं और आप अपने कनेक्शन स्ट्रिंग में किसी उपयोगकर्ता नाम पासवर्ड का उल्लेख नहीं कर रहे हैं:

जब आप अपना कोड लोकलहोस्ट के माध्यम से चलाते हैं तो क्या होता है: जब आप अपने wcf टेस्ट क्लाइंट को लोकलहोस्ट से चलाते हैं, तो यह डेटाबेस से संवाद करने में सक्षम होगा क्योंकि स्थानीय डिबग मोड एप्लिकेशन आपके खाते की सेवा से डेटाबेस को कॉल कर रहा है। इसलिए इसमें डेटाबेस तक पहुँच है क्योंकि devenv.exe आपके उपयोगकर्ता खाते के अंतर्गत चल रहा है।

लेकिन जब आप IIS में अपनी वेब सेवा तैनात करते हैं। अब समझ लें कि यह सेवा आपके खाते के अंतर्गत नहीं IIS के तहत चलती है। इसलिए आपको विंडोज़ प्रमाणीकरण के लिए sql सर्वर तक पहुंचने के लिए IIS सेवा तक पहुँच अधिकार प्रदान करने की आवश्यकता है। यहां आपकी वेब सेवा एक्सेस अधिकारों की समस्या के कारण SQL सर्वर से संवाद करने में सक्षम नहीं होगी और user_______ के लिए लॉग इन विफल (यहां आपका उपयोगकर्ता आएगा)

इसलिए यदि आप अपने डेटाबेस को जोड़ने के लिए विंडोज़ प्रमाणीकरण का उपयोग कर रहे हैं, तो आपको बस IIS एप्लिकेशन पूल सेटिंग्स को बदलना होगा। आपको IIS एप्लिकेशन पूल की पहचान को स्थानीय सिस्टम में बदलने की आवश्यकता है।

नीचे विंडोज प्रमाणीकरण WCF के लिए कदम हैं:

1) ओपन IIS (विंडोज़ + आर (रन) फिर टाइप करें inetmgr, फिर ठीक क्लिक करें)

2) कनेक्शन के तहत अपने पीसी के नाम पर डबल क्लिक करें

3) एप्लिकेशन पूल पर क्लिक करें

4) अपना ऐप पूल चुनें (DefaultAppPool)

5) उसके बाद दाहिनी ओर उन्नत सेटिंग्स पर क्लिक करें:

6) प्रोसेस मॉडल सेक्शन में जाएं और

7) आइडेंटिटी पर क्लिक करें।

8) अब लोकल सिस्टम का चयन करें।

अब अपने sql सर्वर मैनेजमेंट स्टूडियो को खोलें: ओपन रन-> फिर ssms टाइप करें -> फिर ok दबाएं ssms में, अपने विंडोज़ ऑथेंटिकेशन अकाउंट का उपयोग करके लॉगिन करें। सुरक्षा टैब खोलें लॉगिन टैब का विस्तार करें, तब आप अपना खाता देख पाएंगे।

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

(नेटवर्क सेवाओं के लिए यानी इंट्रानेट उपयोगकर्ताओं के लिए आपको NT AUTHORITY \ SYSTEM उपयोगकर्ता के लिए भी उपर्युक्त सेटिंग्स कॉन्फ़िगर करने की आवश्यकता है)

Add Trusted_Connection = True; आपके कनेक्शन स्ट्रिंग में संपत्ति। इसे सहेजें और वेब सेवा परिनियोजित करें। एप्लिकेशन पूल को पुनरारंभ करें।

अब आप डेटाबेस को कनेक्ट कर पाएंगे।


उत्तम! LocalSystem ने मेरे लिए इस मुद्दे को निर्धारित किया :)
अधिनायकवादी

3

मेरे पास यह संदेश था और मैं वेब सर्वर पर विंडोज प्रमाणीकरण का उपयोग करता हूं।

मैं वर्तमान में प्रमाणीकृत वेब उपयोगकर्ता को डेटाबेस के खिलाफ प्रमाणित करना चाहता था, बजाय ऐप पूल में निर्दिष्ट IIS APPPOOL \ ASP.NET v4 उपयोगकर्ता का उपयोग करने के।

मैंने वेब में निम्नलिखित दर्ज करके पाया। मेरे लिए यह निर्धारित किया गया:

<system.web>
  <identity impersonate="true" />
</system.web>

https://msdn.microsoft.com/en-us/library/bsz5788z.aspx

मैं SQL DB में AppPool उपयोगकर्ता नाम बनाने या SQL प्रामाणिक का उपयोग करने के बारे में अन्य उत्तर देखता हूं। यदि आप SQL के अंदर व्यक्तिगत विंडोज उपयोगकर्ताओं को कैप्चर या सुरक्षित नहीं करना चाहते हैं तो दोनों सही होंगे।

टॉम


इसने इसे हमारे लिए हल कर दिया और हमें यकीन नहीं है कि क्यों। IIS / AppPool सिर्फ उस कनेक्शन को हाईजैक करता है जो स्पष्ट रूप से "एकीकृत सुरक्षा = सत्य" कहता है? क्यों??
गाइ

3

1_in SqlServer Security => लॉगिन => NT AUTHORITY \ SYSTEM => RightClick => संपत्ति => उपयोगकर्ता मानचित्रण => YourDatabse का चयन करें => सार्वजनिक और स्वामी का चयन करें => ठीक 2_s: आवेदन पूल DefaultAppPool => अग्रिम सेटिंग => पहचान => LocalSystem =>



2

जब आप Visual Studio अनुप्रयोग शुरू करते हैं तो कैसिनी आपकी वेबसाइट को आपकी स्वयं की उपयोगकर्ता पहचान के रूप में चलाता है। IIS आपकी वेबसाइट को App Pool Identity के रूप में चलाता है। जब तक ऐप पूल पहचान को डेटाबेस तक पहुंच प्रदान नहीं की जाती है, आपको त्रुटियां मिलती हैं।

IIS ने सुरक्षा में सुधार के लिए ऐप पूल पहचान की शुरुआत की। आप डिफ़ॉल्ट ऐप पूल आइडेंटिटी के तहत वेबसाइट चला सकते हैं, या अपने नाम के साथ एक नया ऐप पूल बना सकते हैं, या अपने स्वयं के नाम के साथ एक नया ऐप पूल बना सकते हैं जो उपयोगकर्ता खाते (आमतौर पर डोमेन खाता) के तहत चलता है।

नेटवर्क स्थितियों में (जो कि एज़्योर में नहीं हैं) आप एक सक्रिय निर्देशिका डोमेन उपयोगकर्ता खाते के तहत एक नया ऐप पूल चला सकते हैं; मैं इसे मशीन खाते पर पसंद करता हूं। ऐसा करने से डेटाबेस सहित नेटवर्क संसाधनों के लिए दानेदार सुरक्षा और दानेदार पहुंच मिलती है। प्रत्येक वेबसाइट एक अलग ऐप पूल पर चलती है (और उनमें से प्रत्येक अपने डोमेन उपयोगकर्ता खाते के तहत चलती है)।

सभी कनेक्शन स्ट्रिंग्स में Windows एकीकृत सुरक्षा का उपयोग करना जारी रखें। SQL सर्वर में, डोमेन उपयोगकर्ताओं को लॉगिन के रूप में जोड़ें और प्रति वेबसाइट के आधार पर डेटाबेस, टेबल, एसपी आदि को अनुमति दें। Website1 द्वारा उपयोग किए जाने वाले Eg DB1 में User1 के लिए लॉगिन है क्योंकि Website1 User1 के रूप में ऐप पूल पर चलता है।

विजुअल स्टूडियो बिल्ट-इन DB (जैसे लोकलडीबी) और बिल्ट-इन वेब सर्वर से प्रोडक्शन एन्वायरमेंट पर तैनात करने के साथ एक चुनौती इस तथ्य से उत्पन्न होती है कि डेवलपर के उपयोगकर्ता SID और उसके ACL का उपयोग सुरक्षित उत्पादन वातावरण में नहीं किया जाना है। Microsoft परिनियोजन के लिए उपकरण प्रदान करता है। लेकिन उस गरीब डेवलपर पर दया करें, जो लोकल डी बी और लोकल सेवर के साथ नए आसान वीएस आईडीई में बॉक्स से बाहर काम करने का सब कुछ करने का आदी है, क्योंकि ये उपकरण उस डेवलपर के लिए उपयोग करने में कठिन होंगे, विशेष रूप से ऐसे डेवलपर के लिए जो डायस्मिन और डीबीएडमिन समर्थन की कमी है या उनका विशेष ज्ञान। फिर भी, ऊपर वर्णित उद्यम नेटवर्क की स्थिति की तुलना में एज़्योर को तैनात करना आसान है।


2

यदि आपका कनेक्शन स्ट्रिंग आपके web.config में जोड़ा गया है, तो सुनिश्चित करें कि "एकीकृत सुरक्षा = गलत;" इसलिए यह web.config में निर्दिष्ट आईडी और पासवर्ड का उपयोग करेगा।

<connectionStrings>
    <add providerName="System.Data.SqlClient" name="MyDbContext" connectionString="Data Source=localhost,1433;Initial Catalog=MyDatabase;user id=MyUserName;Password=MyPassword;Trusted_Connection=true;Integrated Security=false;" />
</connectionStrings>

2

जैसा कि बताया गया है, Windows प्रमाणीकरण का उपयोग न करें, SQL सर्वर प्रमाणीकरण का उपयोग करें

यदि आपने "सर्वर कनेक्शन" संवाद का उपयोग करके कनेक्शन बनाया है, तो web.config में कनेक्शन की जांच करना सुनिश्चित करें। यह संभावना है कि आपने कनेक्शन बनाया / संशोधित किया था और इसे web.config में विश्वसनीय कनेक्शन के रूप में संग्रहीत किया गया था। बस इस प्रमाणीकरण का उपयोग करें

<add name="MyDBConnectionString" connectionString="Data Source=localhost;Initial Catalog=Finantial;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient"/>

जो त्रुटि को ठीक करना चाहिए।


2

उपयोगकर्ता के लिए डेटाबेस को अनुमति देने का दूसरा तरीका IIS APPPOOL\ASP.NET v4.0इस प्रकार है।
यहां छवि विवरण दर्ज करें


  1. IIS APPPOOL\ASP.NET v4.0अपने डिफ़ॉल्ट स्कीमा के साथ उपयोगकर्ता नाम और लॉगिन नाम के साथ नया उपयोगकर्ता जोड़ें ।
  2. स्वामी स्कीमा और सदस्यता पर जाएं, db_datareader, db_datawriter देखें

1

सोचा था कि मैं इसे एक उत्तर के रूप में पोस्ट करूंगा क्योंकि यह प्रश्न के लिए प्रासंगिक है और कुछ मामलों में इसका जवाब दे सकता है।

यदि डेटाबेस मौजूद नहीं है तो भी यही संदेश दिखाई देता है!

सुनिश्चित करें कि आपके कनेक्शन स्ट्रिंग में कोई गलत वर्तनी नहीं है, सही सर्वर उदाहरण की ओर इशारा कर रहा है, आदि।


1

मुझे वही समस्या है जो मैंने इसे अब काम Integrated Security=Trueकरने के लिए असत्य में बदलकर हल किया है


1

कुछ ऐसा ही मेरे साथ हुआ था जो मेरे लिए काम कर रहा था वह संपत्ति को बदल रहा था एकीकृत सुरक्षा = वेबसाइट के वेब में सुरक्षित = झूठ को एकीकृत सुरक्षा।


यह काम! मैंने सिर्फ
चार्ल्स जेवियर

0

क्या आपने @Teddyसिफारिश की है और आप अभी भी वही त्रुटि मिली है?

सुनिश्चित करें कि आप ऐप पूल के लिए सेटिंग्स बदल रहे हैं जो आपकी वर्चुअल निर्देशिका से मेल खाती है न कि पैरेंट सर्वर से। प्रत्येक वर्चुअल डायरेक्टरी का अपना ऐपपूल होता है और यह वारिस नहीं होता है।


0

DefaultAppPool में NetworkService को आइडेंटिटी प्रॉपर्टी में सेट करें और Sql सर्वर में यूजर नेटवर्क सर्विस को जोड़ें और इसे अपने डेटाबेस के लिए अप्रूव्ड परमिशन दें, यह मेरे लिए बहुत अच्छा है, मैंने स्थानीय रूप से परीक्षण किया है, लेकिन मुझे लगता है कि यह किसी भी कनेक्ट करने के लिए सबसे अच्छा कॉन्फ़िगरेशन है नेटवर्क में अन्य कंप्यूटर। जब आप IIS में आइडेंटिटी में LocalSystem सेट करते हैं जो अच्छी तरह से काम करता है और एसक्यूएल सर्वर में किसी अन्य उपयोगकर्ता को बनाने के लिए आवश्यक नहीं है, लेकिन मुझे लगता है कि यह नेटवर्क वातावरण में काम नहीं करेगा।


0

मैं ASP.NET वेब एपीआई परीक्षण में एक ही समस्या में भाग गया

SQL Server 2012 एक्सप्रेस डेटाबेस में बनाए गए Visual Studio 2013 एक्सप्रेस डेटाबेस में विकसित Web.Host विकसित IIS एक्सप्रेस (काम कर रहे) में निर्मित परीक्षण का उपयोग कर IIS स्थानीय (गुण पृष्ठ से - वेब विकल्प) का उपयोग करने के लिए संशोधित किया गया है। प्रदाता के लिए .... 'APPPOOL \ DefaultAppPool' का हवाला देते हुए

समाधान जो काम किया।

IIS में

एप्लिकेशन पूल पर क्लिक करें 'DefaultAppPool' सेट पहचान = 'ApplicationPoolIdentity' सेट .NET फ्रेमवर्क = v4.0 (भले ही मेरा ऐप 4.5 था)

SQL सर्वर प्रबंधन स्टूडियो में

सुरक्षा फ़ोल्डर पर राइट क्लिक करें (SQL सर्वर इंजन के तहत सभी तालिकाओं पर लागू होता है) उपयोगकर्ता पर राइट क्लिक करें और 'IIS APPPOOL \ DefaultAppPool' जोड़ें 'अनुदान' कॉलम पर securables में उन विकल्पों की जांच करें जिन्हें आप देना चाहते हैं। उपरोक्त के बारे में यदि आप एक डीबीए हैं जिसे आप शायद जानते हैं और उन विकल्पों को नियंत्रित करना चाहते हैं। यदि आप मेरे जैसे एक डेवलपर हैं तो बस अपनी WEB एपीआई सेवा का परीक्षण करना चाहते थे, जो MVC शैली में EF 6 के माध्यम से SQL सर्वर तक भी पहुँच होती है, तो बस सब कुछ देख लें। :) हाँ, मुझे पता है लेकिन यह काम किया।


0

यदि आप एक नया लॉगिन जोड़ते हैं, तो सुनिश्चित करें कि सर्वर गुणों (राइटक्लिक -> गुण) / सुरक्षा के तहत, प्रमाणीकरण मोड sqlserver और विंडोज़ दोनों के लिए सेट है न कि विंडोज़।


0

सुरक्षा के तहत "सभी को जोड़ें"। यदि आपने सर्वर और उपयोगकर्ताओं को डेटाबेस में लॉग इन किया है, तो यह कुछ ऐसा है जो आप याद कर रहे हैं। उम्मीद है की यह मदद करेगा।


हम अपनी आवश्यकताओं के अनुसार अनुमतियां सेट करते हैं। प्रमाणीकरण भाग को नियंत्रित किया जाता है और हम एक्सेस की अनुमति देने के लिए कोड के माध्यम से प्राधिकरण की जांच करते हैं। अगर आपको लगता है कि कोई अस्पष्टता है तो मुझे ठीक करने के लिए स्वतंत्र महसूस करें। धन्यवाद।
अविनाश बसु

0

रिकॉर्ड के लिए, यदि आप से स्विच LocalDBकरने के बाद इस त्रुटि का सामना करते हैं SQLEXPRESS, तो सुनिश्चित करें कि डेटाबेस पहले से ही मौजूद है SQLEXPRESS। आप इसे प्रबंधन स्टूडियो में सत्यापित कर सकते हैं।

Entity Frameworkस्विच करने के बाद उपयोग करते समय मुझे एक ही समस्या थी SQLEXPRESS from LocalDB। मुझे Update-Databaseकमांड चलाना था। मैं उसके बाद सफलतापूर्वक कनेक्ट करने में सक्षम था।


0

मैंने ठीक वैसा ही किया जैसा @JeffOgata ने कहा लेकिन मुझे त्रुटि मिली:

Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again. (Microsoft SQL Server, Error: 15401)

मैंने अपने त्रुटि संदेश को फिर से देखा और यह कहा Login failed for user 'IIS APPPOOL\DefaultAppPool'.

उपयोगकर्ता नाम जोड़ने के बाद IIS APPPOOL\DefaultAppPoolसब कुछ काम किया।


0

मैंने SQL सर्वर प्रोफाइलर (SSMS => उपकरण मेनू में उपलब्ध) का उपयोग किया और वहां देखा (जब IIS ने डेटाबेस से कनेक्ट करने का प्रयास किया) कि मेरा IIS उपयोगकर्ता किसी कारण से NT AUTHORITY \ IUSR था, इस प्रश्न के उत्तर में अनुशंसित सभी चरणों की कोई बात नहीं । इसलिए मैंने उस उपयोगकर्ता को SQL सर्वर में जोड़ा, और यह काम किया ...


0

Asp.net वेबफॉर्म में,

asp.net स्थापित करते समय यह त्रुटि ठीक हो गई:

सर्वर प्रबंधक> प्रबंधन> भूमिका जोड़ें और फ़ीचर> सर्वर भूमिकाएँ> वेब सर्वर (आईआईएस)> वेब सर्वर> अनुप्रयोग विकास> ASP.NET 3.5 / 4.6 स्थापित है।

मेरी समस्या ठीक हो गई।

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