2012-06-24 7 views
6

मैं एक ASP.NET MVC 2 वेबसाइट है कि मैं रैकस्पेस बादल सर्वर IIS 7.0 उपयोग करने के साथ की मेजबानी कर रहा हूँ निर्माण किया है।कैसे सेट अप करने के लिए एसक्यूएल सर्वर/IIS 7.0 ASP.NET MVC वेबसाइट डेटाबेस के लिए उपयोग करने के लिए अनुमति देने के लिए?

मैं सर्वर पर IIS 7.0 के साथ स्थानीय होस्ट के तहत वेबसाइट का परीक्षण करने का प्रयास करते मैं एक त्रुटि पृष्ठ मिलता है। इस एसक्यूएल लॉग (मैं एसक्यूएल वेब संस्करण का उपयोग कर रहा) से आता है:

Error: 18456, Severity: 14, State: 11 
Login failed for user 'IIS APPPOOL\DefaultAppPool'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: <local machine>] 

मेरी वेबसाइट मेरे घर पीसी पर ठीक काम करता है इसलिए इस मुद्दे को डेटाबेस के साथ जोड़ने के साथ कुछ है।

त्रुटि संदेश कोड का शोध करने के बाद यह सुझाव देता है कि मेरे पास वैध डीबी लॉगिन है लेकिन सर्वर का उपयोग विफल हो गया है। (। सहित stackoverflow/serverfault) मैं विभिन्न मंचों और यहाँ पर यह चारों ओर पढ़ने के ढेर किया था कि मैं क्या कोशिश की है, जिनमें से कोई भी समस्या हल हो जाती है:

  1. एसक्यूएल सर्वर प्रमाणीकरण का उपयोग कर नया लॉगिन सेट करें। मैंने एसक्यूएल में एक नया लॉगिन बनाया और मेरे डीबी के लिए सही पहुंच अधिकार दिए। मैंने वेब कॉन्फ़िगरेशन में निम्न कनेक्शन स्ट्रिंग का उपयोग किया:

    डेटा स्रोत = myServer; प्रारंभिक कैटलॉग = myDB; उपयोगकर्ता आईडी = myUsername; पासवर्ड = myPassword;

  2. IIS APPPOOL\DefaultAppPool के रूप में नया लॉगिन बनाएं। मैंने एसक्यूएल में सही एक्सेस अधिकारों और विंडोज़ प्रमाणीकरण के साथ नए लॉगिन बनाए। निम्नानुसार कनेक्शन स्ट्रिंग:

    सर्वर = myServer; डेटाबेस = myDataBase; Trusted_Connection = True;

  3. उपयोग मौजूदा नेटवर्क लॉगिन NT AUTHORITY\NETWORK SERVICE। मैंने इस उपयोगकर्ता को अपने डेटाबेस में सही पहुंच अधिकारों के साथ मैप किया। निम्नानुसार कनेक्शन स्ट्रिंग:

    सर्वर = myServer; डेटाबेस = myDataBase; Trusted_Connection = True;

ये मुख्य विकल्प हैं जो मैंने ऑनलाइन सामग्री के माध्यम से पढ़ा है। अंत में, यहाँ कुछ अन्य बातों के रूप में है कि सहायक हो सकता है: व्यवस्थापक रूप

  • सेटिंग एसक्यूएल को रन मुद्दा
  • का समाधान नहीं UAC बंद करने से मदद नहीं की
  • मेरे अनुप्रयोग पूल ApplicationPoolIdentity उपयोग कर रहा है (सुरक्षा कारणों के लिए सबसे अच्छा)

संक्षेप में, मेरी वेबसाइट शुरू नहीं होगी क्योंकि यह डीबी से ऑब्जेक्ट नहीं प्राप्त कर सकती है इसलिए त्रुटि उत्पन्न होती है। मुद्दा यह है कि सर्वर तक पहुंच अधिकार सही ढंग से सेट नहीं हैं। मैं काम नहीं कर सकता कि SQL लॉगिन/कनेक्शन स्ट्रिंग/डोमेन एक्सेस अधिकारों की मुझे किस कॉन्फ़िगरेशन की आवश्यकता है।

यह 3 सप्ताह के लिए मुझे झगड़े का है - आप 5 मिनट मेरी मदद करने के लिए कृपया छोड़ कर सकते हैं?

+0

क्या आप अपनी वर्तमान कनेक्शन स्ट्रिंग पोस्ट कर सकते हैं? मुझे लगता है कि आप एकीकृत सुरक्षा से जुड़ रहे हैं, इसलिए AppPoolIdentity SQL सर्वर से कनेक्ट करने के लिए उपयोग किया जाता है। साथ ही, कृपया बताएं कि क्या आपके वेब और एसक्यूएल सर्वर सक्रिय निर्देशिका सेटअप में चल रहे हैं। –

+0

का उपयोग: 'स्रोत = सेट्सफिक्स; प्रारंभिक कैटलॉग = सेट्सऑफिक्स; एकीकृत सुरक्षा = एसएसपीआई; '। मुझे सक्रिय निर्देशिका सेटअप पर प्रश्न पूछने दें ... –

+0

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

उत्तर

8

चूंकि आपके सर्वर (वेब ​​और एसक्यूएल) किसी डोमेन का हिस्सा नहीं हैं, इसलिए आप SQL सर्वर से कनेक्ट करने के लिए Windows प्रमाणीकरण (एकीकृत सुरक्षा) का उपयोग नहीं कर सकते हैं।

आईआईएस में, कनेक्शन स्ट्रिंग में Integrated Security=SSPI होने पर, SQL सर्वर से कनेक्ट करने के लिए उपयोग किया जाने वाला वास्तविक उपयोगकर्ता एप्लिकेशन पूल पहचान है।

आपको अपने विकल्प 1 के साथ जाना चाहिए, जिसका अर्थ है SQL सर्वर प्रमाणीकरण का उपयोग करके नया लॉगिन सेट अप करें।

तो, चरणों होगा:

  1. अपने myUsername एसक्यूएल सर्वर उपयोगकर्ता बनाएँ।
  2. उपयोगकर्ता के गुण संवाद में, Securables अनुभाग पर जाएं और सुनिश्चित करें कि Public चेक किया गया है।
  3. अगला, User mapping अनुभाग (बाईं तरफ) पर जाएं। सूची में अपने डेटाबेस की तलाश करें और इसे जांचें। नीचे Database role membership सूची में, सुनिश्चित करें कि आप public, db_datareader और db_datawriter देखें।
  4. अब संग्रहीत प्रक्रियाओं को निष्पादित करने के लिए अपने उपयोगकर्ता अधिकार दें। प्रबंधन स्टूडियो में sa के रूप में, निष्पादित करें:

    अनुदान मेरे उपयोगकर्ता नाम के लिए अनुदान;

  5. आप कर चुके हैं।

सुरक्षा का सवाल है, तो आप बाद में myUserName के अधिकारों को परिष्कृत उदाहरण टेबल या अन्य वस्तुओं ड्रॉप करने के लिए नहीं, सक्षम होने के लिए कर सकते हैं।

आपके आवेदन आप किसी भी अन्य समस्या है, तो आप अब कनेक्शन स्ट्रिंग अपनी बात 1.

पर इस्तेमाल करना चाहिए, फिर त्रुटि संदेश पोस्ट करें।

+0

धन्यवाद। जिस बिट को मैं याद कर रहा था वह था (ए) 'अनुदान निष्पादन' सेट करना और (बी) मेरे LINQ-to-SQL में मेरा गलत कनेक्शन स्ट्रिंग संदर्भ था। हल समस्या दोनों को ठीक करना। आपकी मदद ने मुझे सही जगह पर देखा। –

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