asp.net mvc - tutorial - फ़ाइल या असेंबली 'System.Web.Mvc' लोड नहीं हो सका




mvc tutorial (14)

मेरा नया एएसपी.नेट एमवीसी वेब एप्लीकेशन मेरे विकास वर्कस्टेशन पर काम करता है, लेकिन मेरे वेब सर्वर पर नहीं चलता है ...

/ 'अनुप्रयोग में सर्वर त्रुटि

विन्यास त्रुटि

विवरण: इस अनुरोध की सेवा के लिए आवश्यक कॉन्फ़िगरेशन फ़ाइल की प्रसंस्करण के दौरान एक त्रुटि हुई। कृपया नीचे दिए गए विशिष्ट त्रुटि विवरणों की समीक्षा करें और अपनी कॉन्फ़िगरेशन फ़ाइल को उचित रूप से संशोधित करें।

पार्सर त्रुटि संदेश: फ़ाइल या असेंबली 'System.Web.Mvc, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35' या इसकी निर्भरताओं में से कोई लोड नहीं हो सका। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा।

स्रोत त्रुटि:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

स्रोत फ़ाइल: सी: \ inetpub \ www.example.org \ web.config लाइन: 46

असेंबली लोड ट्रेस: निम्नलिखित जानकारी सहायक हो सकती है कि क्यों असेंबली 'System.Web.Mvc, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35' लोड नहीं किया जा सका।

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

संस्करण जानकारी: माइक्रोसॉफ्ट .NET फ्रेमवर्क संस्करण: 2.0.50727.3053; एएसपी.नेट संस्करण: 2.0.50727.3053

क्या मुझे सर्वर पर AspNetMVCBeta-setup.msi स्थापित करने की आवश्यकता है? या सर्वर के लिए एक अलग इंस्टॉलर है?


अपने दृश्य फ़ोल्डर के अंदर web.config में असेंबली का संस्करण भी देखें और सुनिश्चित करें कि यह मेल खाता है। मैं कभी-कभी भूल जाता हूं कि उस स्थान पर दूसरा वेब.कॉन्फिग है।


एक ही मुद्दा था और उन्होंने कहा कि सभी असेंबली जोड़ी लेकिन अभी भी एक ही त्रुटि मिल गई।

बाहर निकलता है आपको " विशिष्ट संस्करण " = गलत बनाने की आवश्यकता है।


परियोजना को दूसरे समाधान में ले जाने के बाद मुझे असेंबली फाइलों के समूह के साथ एक ही समस्या थी।

मेरे लिए, web.config फ़ाइल इस असेंबली को जोड़ने का प्रयास कर रही थी:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

प्रोजेक्ट में संदर्भ संस्करण 3.0.0.0 ओर इशारा कर रहा था (संदर्भ पर क्लिक करें और गुणों के नीचे स्क्रॉल करें)। इसलिए मैंने web.config फ़ाइल में संदर्भ संस्करण को अभी बदल दिया है।

मुझे नहीं पता कि यह किसी तरह का एक बग था। अन्य सभी संदर्भों को जोड़ने में समस्या यह थी कि संदर्भ कॉन्फ़िगरेशन फ़ाइल में दिखाई दिए थे, लेकिन वास्तव में इस परियोजना में (समाधान एक्सप्लोरर के अंदर) बिल्कुल संदर्भित नहीं किया गया था और आवश्यक फाइलों को बाकी परियोजना फ़ाइलों के साथ कॉपी नहीं किया गया था, शायद "copy local = true" नहीं होने के कारण

अब, मैं इन असेंबली को जोड़ने योग्य असेंबली में नहीं ढूंढ पाया (संदर्भ पर दायाँ क्लिक करके और उन्हें असेंबली या एक्सटेंशन से जोड़ने की कोशिश कर रहा हूं)। इसके बजाए मैंने एक नया एमवीसी समाधान बनाया जिसने मुझे आवश्यक सभी असेंबली और संदर्भ जोड़े, और समाधान खोजकर्ता में नई परियोजनाओं के संदर्भों के तहत उन्हें ढूंढना और संदर्भ के लिए गुण विंडो में अपना रास्ता खोजना।

तब मैंने अन्य पुस्तकालयों की प्रतिलिपि बनाई जो मुझे अन्य परियोजना में आवश्यक थीं और उन्हें संदर्भित किया था।


मैं sgriffinusa के रूप में एक ही मुद्दे में भाग गया। संदर्भों के अलावा फिल के लेख से पता चलता है: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx । मैंने इन्हें जोड़ा:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

गोडाडी परिनियोजन पूरी तरह से काम किया। कस्टम त्रुटियों को बंद करें और त्रुटियों को सही करने के लिए संदर्भ जोड़ें। इससे आपको सही दिशा में ले जाना चाहिए।


मैं जेनेट्स को .NET परियोजनाओं के साथ उपयोग कर रहा हूं और एमवीसी 4 संदर्भों के साथ परेशानी थी।

अंत में रजिस्ट्री के आधार पर एक .Net संदर्भ खोज इंजन कार्यक्षमता का उपयोग करके मैंने अपनी समस्या हल की:

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

आप उपकुंजी बना सकते हैं और उदाहरण के लिए "c: \ myreferenceedir" पर डिफ़ॉल्ट कुंजी सेट कर सकते हैं।

यह मुझे एमवीसी संस्करणों और एएसपीनेट वेब पृष्ठों के साथ बचाया।

"संदर्भ संवाद जोड़ें" के संदर्भ जोड़ने के लिए उपयोगी

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/


मैंने NuGet संकुल प्रबंधित करें का उपयोग कर "माइक्रोसॉफ्ट एएसपी.नेट रेजर" जोड़ा।

कुछ कारणों से, संदर्भ जोड़ें के साथ, मेरे पास केवल System.Web.Helpers 1.0.0 और 2.0.0 था ... लेकिन 3.0.0 नहीं।

एक और विकल्प, जिसने मुझे काम किया, सिस्टम.Web.Mvc और System.Web.Http के संदर्भों को हटाना था ... फिर उन्हें csproj फ़ाइल में पैकेज स्थानों पर बहने दो (आप आसानी से परियोजना को संपादित कर सकते हैं एक पाठ संपादक):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>

मैंने विजुअल स्टूडियो 2015 में इसे ठीक करने के लिए "अद्यतन-पैकेज -इंस्टॉल Microsoft.AspNet.Mvc" किया है।


यदि आप एक होस्टिंग प्रदाता का उपयोग नहीं कर रहे हैं, और आपके पास स्थापित करने के लिए सर्वर तक पहुंच है ... तो एमवीसी 3 अपडेट टूल्स इंस्टॉल करें, ऐसा करें ... यह आपको विंडोज 2003 सर्वर / आईआईएस 6 मशीन पर समस्याओं के घंटों को बचाएगा। , मैंने इस पृष्ठ पर Nuget.Core.dll संस्करण संख्या मेल नहीं खाई


वीएस -2010 में, समाधान एक्सप्लोरर में प्रोजेक्ट पर राइट क्लिक करें और 'परिनियोजित निर्भरता जोड़ें' का चयन करें। फिर निम्नलिखित संवाद में एमवीसी से संबंधित चेक बॉक्स की जांच करें।

यह प्रोजेक्ट में '_bin_deployableAssemblies' फ़ोल्डर बनाता है जिसमें अन्य उत्तरों में उल्लिखित सभी .dll फ़ाइलें शामिल हैं। मेरा मानना ​​है कि तैनाती पैकेज बनाते समय इन्हें बिन फ़ोल्डर में कॉपी किया जाता है।


वेब पर एक महत्वपूर्ण विचार वेब.कॉन्फिग फ़ाइल है, कुछ पैकेज आपके बाध्यकारी रीडायरेक्ट को खतरे में डाल सकते हैं (नकली पैकेज घर पैकेज में था कि मैंने पैकेज से web.config को नहीं हटाया या सुनिश्चित किया कि पैकेज में web.config कोई बाध्यकारी रीडायरेक्ट नहीं है। उदाहरण के लिए डुप्लिकेट और गलत नोड को हटाकर इसे हल करता है

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

8 से 24 लाइनों को हटाकर बिल्ड को ठीक करता है।


सरल फिक्स वीएस -2010 में, अपने एमवीसी प्रोजेक्ट पर राइट क्लिक करें, "तैनाती निर्भरता जोड़ें ..." का चयन करें, अपने इच्छित विकल्पों का चयन करें और ठीक क्लिक करें


सीधे अपने वेब सर्वर पर एमवीसी स्थापित करना एक विकल्प है, क्योंकि तब जीएसी में असेंबली स्थापित की जाएंगी। आप असेंबली को भी तैनात कर सकते हैं, जो अंतिम रिलीज उपलब्ध होने तक आपके सर्वर को प्री-रिलीज असेंबली से साफ़ रखने में मदद कर सकता है।

फिल हैक ने कुछ दिनों पहले एमवीसी को अपने ऐप के साथ तैनात करने के बारे में एक अच्छा लेख पोस्ट किया था, इसलिए सीधे इंस्टॉल करना जरूरी नहीं है:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx


हैक पोस्ट के अलावा, हंसेलमैन का भी एक समान पद है। बीआईएन एमएससी के बिना विंडोज सर्वर पर रेजर के साथ एएसपी.नेट एमवीसी 3 को तैनात करना

मेरे लिए, "कॉपी स्थानीय = सत्य" समाधान अपर्याप्त था क्योंकि मेरी वेबसाइट के प्रोजेक्ट संदर्भों में अनुपलब्ध सभी डीएल शामिल नहीं थे। जैसा कि स्कॉट ने अपनी पोस्ट में उल्लेख किया है, मुझे अपने विकास बॉक्स पर निम्न फ़ोल्डर से अतिरिक्त डीएल प्राप्त करने की भी आवश्यकता है: सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft ASP.NET \ ASP.NET वेब पेज \ v1.0 \ Assemblies। त्रुटि संदेश ने मुझे बताया कि कौन सा डीएल गुम था (System.Web.Infrastructure, System.Web.Razor, आदि) मैं प्रत्येक लापता डीएल को एक-एक करके जोड़ता रहा, जब तक यह काम नहीं करता।


त्वरित और सरल समाधान: मुझे माइक्रोसॉफ्ट.एस्पनेट.एमवीसी-संस्करण 5.2.3 के साथ इस समस्या का सामना करना पड़ा और इन सभी धागे से गुजरने के बाद मुझे एक सरल समाधान मिला।

बस चरणों का पालन करें:

  1. अपनी परियोजना के लिए विजुअल स्टूडियो में ओपन NuGet पैकेज प्रबंधक खोलें
  2. Microsoft.AspNet.Mvc के लिए खोजें
  3. जब मिला, अनइंस्टॉल करने के लिए कार्रवाई बदलें और इसे अनइंस्टॉल करें
  4. एक बार हो जाने के बाद, इसे फिर से इंस्टॉल करें और इसे आजमाएं

यह संदर्भों के साथ सभी मुद्दों को स्वचालित रूप से ठीक कर देगा। नीचे दी गई छवि देखें:







asp.net-mvc