2011-08-02 16 views
23

के लिए लॉगिन विफल रहा है, मैं "विंडोज संचार संचार 4 चरण द्वारा चरण" में कुछ डब्ल्यूसीएफ उदाहरणों के माध्यम से काम कर रहा हूं। जब तक सेवा कैसीनी में होस्ट की जाती है तब तक मेरा परिणामस्वरूप एप्लिकेशन ठीक चलता है। जब मैं स्थानीय आईआईएस में सेवा तैनात करता हूं तो यह विफल रहता है। आईआईएस में तैनात किए जाने पर, मैं आईई में एसवीसी पेज पर ब्राउज़ कर सकता हूं। यह काम करता है।आईआईएस पर तैनाती करते समय अपवाद: उपयोगकर्ता 'आईआईएस APPPOOL DefaultAppPool'

पुस्तक के अनुसार, पृष्ठ 41, ऐप पूल खाते को मेरे डेटाबेस में db_owner भूमिका का सदस्य होना आवश्यक है। लेखक सुझाव देता है कि, सेवा के सही पते की पुष्टि करने के बाद (पहले से ही ऐसा किया गया है), ऐप पूल खाते की अनुमतियों की जांच कर रहा है।

मैं कैसे सत्यापित करूं कि मेरे डब्ल्यूसीएफ सेवा को होस्ट करने वाले एप्लिकेशन पूल द्वारा कौन सा खाता उपयोग किया जाता है? वर्तमान में डिफ़ॉल्ट ऐप पूल और आईआईएस APPPOOL \ DefaultAppPool का उपयोग db_owner भूमिका में है। IIS APPPOOL \ ASP.NET v4.0 भी db_owner भूमिका में है।

अपवाद नहीं है ...

System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'. 

मैं इस मुद्दे का निवारण कैसे करते हैं? धन्यवाद!

उत्तर

44

समाधान here पाया:

  • ओपन आईआईएस
  • डबल कनेक्शन के तहत अपने पीसी नाम पर क्लिक करें
  • क्लिक करें आवेदन ताल
  • अपने अनुप्रयोग पूल (DefaultAppPool) का चयन करें
  • तब पर कार्रवाई के तहत राइट क्लिक करें उन्नत सेटिंग्स,
    • प्रक्रियाओं पर जाएं एस मॉडल अनुभाग और
    • पहचान पर क्लिक करें।
    • अब नेटवर्क सेवा का चयन करें।
+0

इस समाधान के लिए आपको बहुत बहुत धन्यवाद, लेकिन कृपया आप इस मुद्दे के बारे में विवरण दे सकते हैं –

+3

नेटवर्क सेवा का चयन करने से मेरी मदद नहीं हुई, मेरे लिए समस्या का समाधान किया गया था पहचान में कस्टम खाता विकल्प का चयन करना और मेरा पीसी उपयोगकर्ता नाम और पासवर्ड भरना । दिशा – ParPar

+1

के लिए धन्यवाद अब यह त्रुटि देना शुरू कर दिया: उपयोगकर्ता 'वर्कग्रुप \\ मशीन $' के लिए लॉगिन विफल रहा। :( –

1

मुझे एक ही समस्या थी। समस्या यह थी कि मेरे पास "एकीकृत सुरक्षा = सत्य" था मेरे कनेक्शन स्ट्रिंग में लेकिन मैं एसक्यूएल प्रमाणीकरण का उपयोग कर रहा था और एक ही समय में प्रमाण पत्र में गुजर रहा था। मैंने एकीकृत सुरक्षा टुकड़ा हटा दिया और सब कुछ काम किया।

0
if not exists 
(select * from sys.server_principals where name='IIS APPPOOL\DefaultAppPool') 
    create login [IIS APPPOOL\DefaultAppPool] from windows; 
+2

कोड से बचें केवल जवाब दें भविष्य के उपयोगकर्ताओं के लिए सहायक – LcSalazar

0

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

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

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

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

नीचे खिड़कियों प्रमाणीकरण WCF के लिए कदम हैं: • खुले आईआईएस (विंडोज़ + आर (रन) तो टाइप करें inetmgr, फिर ठीक क्लिक करें) • डबल • क्लिक करें आवेदन ताल कनेक्शन के तहत अपने पीसी नाम पर क्लिक करें • का चयन करें अपने ऐप पूल (DefaultAppPool) • फिर दाएं क्लिक पर कार्रवाइयों के तहत उन्नत सेटिंग्स: • प्रक्रिया मॉडल अनुभाग और पर जाएं • पहचान पर क्लिक करें। • अब स्थानीय सिस्टम का चयन करें।

अब अपना एसक्यूएल सर्वर प्रबंधन स्टूडियो खोलें: खुला रन-> फिर एसएसएमएस टाइप करें, फिर एसएसएमएस में दबाएं, अपने विंडोज प्रमाणीकरण खाते का उपयोग करके लॉगिन करें। खुला सुरक्षा टैब लॉग इन टैब का विस्तार करें, तो आप अपना खाता देख पाएंगे।

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

जोड़ें विश्वसनीयed_onnection = True; आपके कनेक्शन स्ट्रिंग में संपत्ति। इसे सहेजें & वेब सेवा को तैनात करें। ऐप पूल पुनरारंभ करें।

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