asp.net mvc - NHibernate + IIS7.5 throws "A session factory has already been configured with the key of nhibernate.current_session" -


एस # आर्क आर्किटेक्चर 2.3 आरसी का उपयोग करके, मैं दो वेबसाइटों को प्रकाशित करने की कोशिश कर रहा हूं जो लगभग-उपयोग करते हैं - एक ही कोडबेस

  पथ तक पहुंच 'सी: \ विंडोज़ \ टेम्प \ ", जो कि मैं प्रकाशित अनुप्रयोगों में से सबसे पहले ठीक से चलाता है, हालांकि, परिनियोजित करने और दूसरे अनुप्रयोग को चलाने का प्रयास करने पर, Nhibernate.current_session - 851346262.bin 'से इनकार किया गया है।   

जब मैं खिड़की को ताज़ा करता हूं, तब मुझे यह अपवाद मिलता है:

  एक सत्र फ़ैक्टरी को पहले से ही nhibernate.current_session की कुंजी के साथ कॉन्फ़िगर किया गया है   

मैंने उन्हें अलग-अलग एप्लिकेशन पूल में लोड करने का भी प्रयास किया है और त्रुटि बनी रहती है। मुझे नहीं पता कि यह कैसे होता है कि मेरे दो आवेदन सत्र IIS पर टकर रहे हैं, जबकि वे दृश्य स्टूडियो के साथ ठीक चलते हैं।

FYI, मैं उन्हें विंडोज सर्वर 2008 R2 + IIS पर चलाने की कोशिश कर रहा हूं 7.5

कोई भी मदद?

ऐसा लगता है कि S # arp वास्तुकला का उपयोग करने की कोशिश करता है दोनों अनुप्रयोगों के लिए एक ही NHibernate सत्र कारखाना यह शायद टकराने क्योंकि यह दोनों वेब अनुप्रयोगों के लिए उसी डिफ़ॉल्ट 'फ़ैक्टरी कुंजी' (nhibernate.current_session) का उपयोग करता है, जब यह डिस्क पर कॉन्फ़िगरेशन बनी रहती है। क्या आपको अलग 'फ़ैक्टरी कुंजियों' का उपयोग करना चाहिए? ऐसा करने के लिए आप कई डेटाबेस के बारे में अनुभाग पढ़ सकते हैं (हालांकि आपके पास एकाधिक डेटाबेस नहीं है, आपका समाधान समान हो सकता है):

प्रश्न: मैं एकाधिक के लिए समर्थन कैसे जोड़ूं डेटाबेस:

ए :: अपने प्रोजेक्ट में एक अतिरिक्त डेटाबेस के लिए समर्थन जोड़ने के लिए:

एक NHibernateForOtherDb.config फ़ाइल बनाएँ जिसमें नए डेटाबेस के लिए कनेक्शन स्ट्रिंग शामिल है < पी> अपने प्रोजेक्ट के भीतर। वेब। एमवीसी / ग्लोबल.एएसएक्स सीएस, तुरंत एनएचइबर्नेनेट सत्र के अंतर्गत। इनट () पहले सत्र फैक्ट्री को इनिशियलाइज़ करने के लिए, NHibernateSession.AddConfiguration () पर एक अतिरिक्त कॉल। जबकि पहली NHibernate initialization एक डिफ़ॉल्ट कारखाने कुंजी मानता है, आपको 2 इनिशियलाइजेशन के लिए एक स्पष्ट फैक्टरी कुंजी प्रदान करने की आवश्यकता होगी। इस फ़ैक्टरी कुंजी को रिपॉजिटरी द्वारा संदर्भित किया जाएगा जो नए डेटाबेस से भी जुड़ा हुआ है ...

S # arp को देखते हुए मैंने पाया कि वे डिस्क पर फ़ाइल बनाने के लिए निम्न तर्क का उपयोग करते हैं:

  var fileName = string.Format ("{0} - {1} .bin", configKey, Assembly.GetCallingAssembly ()। CodeBase.GetHashCode ());   

इसलिए यदि आप कॉन्फ़िग / फ़ैक्टरी कुंजी को बदलना नहीं चाहते हैं तो आप इस कोड को अलग-अलग विधानसभा से कॉल करने का प्रयास कर सकते हैं।

संपादित करें:

ऐसा लगता है कि NHibernateSession.Init अधिभार नहीं लेता है जिससे आप फ़ैक्टरी कुंजी निर्दिष्ट कर सकते हैं लेकिन इसमें अन्य सार्वजनिक विधियां हैं जिन्हें आप इन्हें इसके बजाय कॉल कर सकते हैं:

  NHibernateSession.InitStorage (भंडारण); {NHibernate सत्र जोड़ें.अधिकवत कॉन्फ़िगरेशन ("% अपने हाथ की FACTORY कुंजी% रखें", ...); } पकड़ {NHibernate सत्र। भंडारण = शून्य; फेंकना; }    

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -