मैं सर्विस लोकेशन में सहायता के लिए निनजेक्ट के संयोजन के साथ Microsoft.Practices.ServiceLocation असेंबली का उपयोग कर रहा हूं। मैं अपने निनजेक्ट कर्नेल को सर्विसलोकेटर प्रदाता विधि में पंजीकृत करता हूं:

var kernel = new StandardKernel();
//do bindings
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);

उपरोक्त कोड उन मशीनों पर ठीक काम करता है जिनमें एंटरप्राइज़ लाइब्रेरी स्थापित है (एमएसआई निष्पादन योग्य के माध्यम से)। मैं उत्पादन में इंस्टॉलर चलाने की स्थिति में नहीं हूं, इसलिए मेरे पास बिन निर्देशिका में स्थानीय रूप से डीएल है, उम्मीद है कि यह काम करेगा। हालांकि यह काम नहीं करता है। मुझे कोई असेंबली नहीं मिली अपवाद नहीं मिला, इसके बजाय मुझे एक ऑब्जेक्ट संदर्भ मिलता है जो कॉल से अपवाद सेट नहीं करता है: 'माइक्रोसॉफ्ट पर। प्रैक्टिस। सर्विसलोकेशन. सर्विस लोकेटर.get_Current ()'।

मैंने कुछ जगहों पर पढ़ा है कि इस असेंबली में कोई निर्भरता नहीं है http://msdn.microsoft.com/en-us/library/ff664422%28v=PandP.50%29.aspx और एक स्थानीय dll को चाल चलनी चाहिए, लेकिन ऐसा नहीं लगता .

मैंने कुछ बक्से पर परीक्षण किया है और जब तक मैं इंस्टॉलर नहीं चलाता तब तक त्रुटि लगातार होती है। दिलचस्प बात यह है कि जब मैं लाइब्रेरी को अनइंस्टॉल करता हूं, तब भी यह काम करता है (मुझे लगता है कि यह कहीं कैश किया गया है)।

क्या किसी को इस प्रकार के मुद्दे के साथ कोई अनुभव है?

1
AaronHS 29 सितंबर 2011, 16:24

1 उत्तर

सबसे बढ़िया उत्तर

मुद्दा यह निकला कि servicelocator.current खाली था क्योंकि बाध्यकारी मॉड्यूल में से एक मैं ऑटो पंजीकरण कर रहा था जिसमें एक डीएल गुम था। क्योंकि बूटस्ट्रैपर को ग्लोबल.एएसएक्स से बुलाया जा रहा था, मुझे त्रुटि प्रबंधन था जो कि किसी भी अपवाद को लॉगिंग करने और जारी रखने के लिए माना था (नहीं चाहता कि पूरी साइट इस एक पृष्ठ के लिए रुक जाए)। इसलिए मुझे reg त्रुटि कभी नहीं मिली और मेरा बूटस्ट्रैपर मुझे बताए बिना विफल हो रहा था।

var kernel = new StandardKernel();
//do bindings -> throw error here without reaching below two lines to regiester the service locator
var locator = new NinjectServiceLocator(kernel);
ServiceLocator.SetLocatorProvider(() => locator);
1
AaronHS 4 अक्टूबर 2011, 13:57