2008-11-27 14 views
5

मैंने समारोह में पारित पहले तर्क के प्रकार के लिए असेंबली उपलब्ध कराने की आवश्यकता के बारे में कुछ देखा। मुझे लगता है कि यह है, मैं यह नहीं समझ सकता कि मुझे क्या याद आ रहा है।सिस्टम.Web.Hosting.AplicationHost.CreateAplplicationHost फेंक System.IO.FileNotFoundException क्यों?

यह कोड एक सेवा में है। मैं 'नेटवर्क सर्विसेज' उपयोगकर्ता खाते के तहत सेवा चला रहा था, जब मैंने उस सत्र में खाता बदल दिया जिस पर मैंने लॉग ऑन किया था, ठीक है। लेकिन, क्या अंतर है, और मैं इसे नेटवर्क्स सर्विसेज उपयोगकर्ता के लिए कैसे काम कर सकता हूं।

उत्तर

-3

मुझे अंततः एक उत्तर मिला: ऐसा प्रतीत होता है कि ApplicationHost.CreateAplicationHost() को दिया गया प्रकार जीएसी में स्थित एक असेंबली में होना चाहिए। सरल, और बेवकूफ :)

+0

कूल। क्या आपको यह कुछ दस्तावेज में मिला है जो मैं देख सकता हूं ... या यह परीक्षण और त्रुटि से था? –

+3

ने मतदान किया क्योंकि असेंबली को जीएसी – Simon

+0

में होने की आवश्यकता नहीं है दरअसल, असेंबली को जीएसी में रखने की आवश्यकता नहीं है। इसे असेंबली बाध्यकारी के साथ करना है।संलयन लॉगिंग पर रखें और आप वास्तव में देख सकते हैं कि यह कहां गलत हो जाता है –

0

नेटवर्क सेवा एक ऐसे खाते में निर्मित है जिसमें संसाधनों के लिए बहुत सीमित पहुंच (अच्छे कारण के लिए) है। आपको शायद इसे बदलना नहीं चाहिए क्योंकि आप अपनी साइट को अन्य संभावित भेद्यता तक खोल देंगे।

यदि आपको बिल्कुल अन्य संसाधनों तक पहुंचने के लिए इसे कॉन्फ़िगर करने के लिए here देखें।

0

मुझे लगता है कि यह नेटवर्क सेवा खाते या कोड एक्सेस सुरक्षा से अधिक निकटता से संबंधित है और इसमें जीएसी के साथ कुछ लेना देना नहीं है। मैं एक एमएस टेस्ट प्रोजेक्ट में एएसपी.Net होस्ट बनाने के लिए CreateApplicationHost() का उपयोग कर रहा हूं और यह एक चैंप की तरह काम करता है। मैं जिस प्रकार का उपयोग करता हूं वह एक असेंबली में नहीं है जो जीएसी में तैनात है या यहां तक ​​कि दृढ़ता से नामित है (इसे टेस्टप्रोजेक्ट में परिभाषित किया गया है)।

आपको इन प्रकार की असंगतताओं से प्यार होना चाहिए ... यह जीवन को दिलचस्प बनाता है।

1

मुझे यह समस्या भी थी। मुझे लगता है कि रनटाइम CreateApplicationHost के पहले तर्क के रूप में पारित प्रकार युक्त असेंबली को लोड करने का प्रयास कर रहा है और इसे

कुछ विचित्र कारणों से यह काम करता है जब मैंने अपनी भौतिक निर्देशिका में एक बिन निर्देशिका बनाई (तीसरा तर्क) जिसमें एक्सई या असेंबली होती है जिसमें वह लोड होता है जिसे वह लोड करने का प्रयास कर रहा था।

मैं क्यों यह काम कर निर्देशिका पहले में नहीं लगती है पता नहीं है ...

4

अपने वेब अनुप्रयोग के बिन फ़ोल्डर में अपने द्विआधारी नकल भी ठीक कर देंगे।

2

वैसे, this पृष्ठ पर इस विषय पर थोड़ी अधिक जानकारी है और जीएसी के मुद्दे को काम करने के लिए एक संभावित तरीका है जो आपकी असेंबली को बिन फ़ोल्डर में कॉपी कर रहा है। पृष्ठ इस बिंदु पर कुछ साल पुराना है लेकिन यह अभी भी प्रासंगिक लगता है।

0

मैं इस विंडोज 2008 को .NET2 में काम करने के लिए या तो नहीं मिल सका (64-बिट, लेकिन मुझे नहीं लगता कि की अहमियत)। यह तब काम करता था जब मेरा उपयोगकर्ता स्थानीय प्रशासक था, लेकिन मैं नहीं चाहता कि मेरी सेवाओं को उन्नत विशेषाधिकारों के साथ चलाना पड़े। मैंने उच्च और निम्न की खोज की और आखिरकार इसे समझ लिया (जीएसी को असेंबली जोड़ने के बिना, मेरे लिए भी उतना ही बुरा): मेरी स्वयं-होस्टेड साइट के लिए एक web.config फ़ाइल बनाएं जो जांच के लिए बिन फ़ोल्डर सेट करता है। इससे पहले कि मेरे पास web.config फ़ाइल न हो, क्योंकि मेरी साइटें कोड में सभी को संभाली गई थीं। यह मेरी कॉन्फ़िगरेशन फ़ाइल है जो अब दिखता है:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin"/> 
    </assemblyBinding> 
    </runtime> 
</configuration> 
संबंधित मुद्दे