Dosya veya montaj 'System.Web.Mvc' yüklenemedi


200

Yeni ASP.NET MVC Web Uygulamam geliştirme iş istasyonumda çalışıyor, ancak web sunucumda çalışmıyor ...


'/' Uygulamasında Sunucu Hatası


Yapılandırma hatası

Açıklama: Bu isteğe hizmet vermek için gereken bir yapılandırma dosyasının işlenmesi sırasında bir hata oluştu. Lütfen aşağıdaki belirli hata ayrıntılarını inceleyin ve yapılandırma dosyanızı uygun şekilde değiştirin.

Ayrıştırıcı Hata İletisi: Dosya veya derleme 'System.Web.Mvc, Sürüm = 1.0.0.0, Kültür = nötr, PublicKeyToken = 31bf3856ad364e35' veya bağımlılıklarından biri yüklenemedi. Sistem belirtilen dosyayı bulamıyor.

Kaynak Hatası:

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"/>

Kaynak Dosya: C: \ inetpub \ www.example.org \ web.config Satır: 46

Derleme Yükü İzleme: Aşağıdaki bilgiler, 'System.Web.Mvc, Sürüm = 1.0.0.0, Kültür = nötr, PublicKeyToken = 31bf3856ad364e35' derlemesinin neden yüklenemediğini belirlemek için yardımcı olabilir.

WRN: Montaj ciltleme günlüğü KAPALI.
Derleme bağlama hatası günlüğünü etkinleştirmek için [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) kayıt defteri değerini 1 olarak ayarlayın.
Not: Montaj bağlama hatası günlüğü ile ilişkili bazı performans cezaları vardır.
Bu özelliği kapatmak için [HKLM \ Software \ Microsoft \ Fusion! EnableLog] kayıt defteri değerini kaldırın.

Sürüm Bilgileri: Microsoft .NET Framework Sürüm: 2.0.50727.3053; ASP.NET Sürümü: 2.0.50727.3053


AspNetMVCBeta-setup.msi dosyasını sunucuya yüklemem gerekir mi? Yoksa sunucular için farklı bir yükleyici var mı?

resim açıklamasını buraya girin

Yanıtlar:


215

Bu konuyu ele alan bir blog yazısı yazdım. ASP.NET MVC'yi sunucunuza kurabilirsiniz VEYA buradaki adımları takip edebilirsiniz .


EDIT: (jcolebrand tarafından) Bu bağlantıdan geçti, sonra aşağıdaki Victor ile aynı sorunu vardı , bu yüzden bunları da eklemenizi öneririz:

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

6
Not: MVC4 (şu anda beta) yüklüyse, bu DLL'lerin v1.0'ını almak isteyeceksiniz, ayrıca System.Web.Helpers'i de almak istersiniz (en azından gerekli).
Tracker1

1
-1 Bağlantı verdiğiniz yayınınız, Microsoft.Web.Altyapısı'nın Yayınlama mekanizması aracılığıyla web sunucusuna nasıl alınacağını açıklamaz. Bir şeyleri doğrudan bir sunucuya kurmak zorunda kalmak, bir çeşit sux.
Mark Rogers

1
visual studio 2010 ile bu burada açıklandığı gibi çok daha kolay hale geldi: britishdeveloper.co.uk/2011/06/…
Daniël Tulp


Ben bin klasörü hortum ve sonra tekrar Yayınlamak zorunda, yani, Dağıtım Paketi kullanmıyorsanız.
Robert Koch

41

Ben sgriffinusa ile aynı konuya girdim. Referanslara ek olarak Phil'in makalesinde şunlar yer almaktadır: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Bunları ekledim:

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

Godaddy Dağıtım mükemmel çalıştı. Özel hataları kapatın ve hataları düzeltmek için referanslar ekleyin. Bu sizi doğru yönde yönlendirmelidir.


26

MVC'yi doğrudan web sunucunuza yüklemek bir seçenektir, çünkü montajlar GAC'ye yüklenecektir. Ayrıca, son bir sürüm elde edilinceye kadar sunucunuzun yayın öncesi montajlardan uzak tutulmasına yardımcı olabilecek montajları da dağıtabilirsiniz.

Phil Haack, uygulamanızla birlikte MVC'yi nasıl dağıtacağınız hakkında birkaç gün önce güzel bir makale yayınladı, bu yüzden doğrudan yüklemenize gerek yok:

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


25

GoDaddy paylaşılan barındırma MVC3 Razor web uygulaması dağıtmaya çalışırken aynı sorunu koştu. Başvurulması gereken bazı ek .dll dosyaları vardır. Ayrıntılar burada: http://paulmason.biz/?p=108

Temel olarak @ Haacked'in gönderisinde listelenenlere ek olarak aşağıdakilere referanslar eklemeniz ve bunları açıklandığı gibi yerel olarak dağıtılacak şekilde ayarlamanız gerekir.

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

Teşekkürler adam, el ile referans ekledikten sonra yerel olarak dağıttıktan sonra bu MVC3 için sorunu çözdü!
Stefanvds

Aynı şey burada. Bu ek DLL'leri ekleme konusunda iyi rehberlik. Teşekkürler!
Mike L

Aynı şey burada. GoDaddy'de değil, şirket sunucumda, bu yüzden bu sadece genel bir durum olmalıdır.
TJKjaer

13

VS2010'da, Çözüm Gezgini'nde projeye sağ tıklayın ve 'Dağıtılabilir Bağımlılıklar Ekle'yi seçin. Ardından, aşağıdaki iletişim kutusundaki MVC ile ilgili onay kutularını işaretleyin.

Bu, projede diğer yanıtlarda belirtilen tüm .dll dosyalarını içeren bir '_bin_deployableAssemblies' klasörü oluşturur. Bir dağıtım paketi oluştururken bunların bin klasörüne kopyalanacağına inanıyorum.


9

Basit düzeltme. VS2010'da MVC projenize sağ tıklayın, "Konuşlandırılabilir Bağımlılıklar Ekle ..." seçeneğini seçin, istediğiniz seçenekleri seçin ve Tamam'a tıklayın


8

Hızlı ve Basit Çözüm: Microsoft.AspNet.Mvc-Sürüm 5.2.3 ile bu sorunla karşılaştım ve tüm bu iş parçacıklarını geçtikten sonra en basit bir çözüm buldum.

Sadece adımları takip edin:

  1. Projeniz için NuGet Paket Yöneticisi'ni Visual Studio'da açın
  2. Microsoft.AspNet.Mvc dosyasını arayın
  3. Bulduğunuzda, eylemi Kaldır ve Kaldır olarak değiştirin
  4. İşiniz bittiğinde tekrar yükleyin ve şimdi deneyin

Bu, referanslarla ilgili tüm sorunları otomatik olarak düzeltir. Aşağıdaki resme bakın:

resim açıklamasını buraya girin


7

Aynı sorunu vardı ve söyledikleri tüm montajı eklediler, ancak yine de aynı hatayı aldılar.

" Özel Sürüm " = Yanlış yapmalısınız .

Belirli sürüm yanlış olmalıdır.


Alternatif olarak, etkin değilse 'Yerel Kopyala'yı' Doğru 'olarak değiştirmelisiniz,
AStopher

6

Eklemek istiyoruz çünkü onu kullanan bir sınıf kütüphanesi yapıyoruz.

Benim için burada ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies


3

Bir barındırma sağlayıcısı kullanmıyorsanız ve yüklemek için sunucuya erişiminiz varsa ... Ardından MVC 3 güncelleme araçlarını yükleyin, bunu yapın ... bir Windows 2003 sunucusunda / IIS6 makinesinde saatlerce sorundan tasarruf etmenizi sağlar. , Ben burada Nuget.Core.dll sürüm numarası uyumsuzluk bu sayfada yorum yaptı


3

Haack karakoluna ek olarak, Hanselman'ın da benzer bir postası var. BIN ASP.NET MVC 3'ü Razor ile MVC kurulu olmayan bir Windows Server'a dağıtma

Benim için "Yerel kopyala = doğru" çözüm Web sitemin proje başvuruları eksik tüm dlls içermediğinden yetersizdi. Scott'ın yazısında da belirtildiği gibi, geliştirme kutumdaki aşağıdaki klasörden ek dll'ler almam gerekiyordu: C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. Hata mesajı hangi dll eksik olduğunu bana bildirdi (System.Web.Infrastructure, System.Web.Razor, vb) Ben çalışana kadar her eksik dll, tek tek eklemeye devam etti.


3

Visual Studio 2015'te düzeltmek için bir "Update-Package –yeniden Microsoft.AspNet.Mvc" yaptım.


3

Önemli bir husus web.config dosyasıdır, Bazı paketler bağlanma yönlendirmelerinizi tahribatlara neden olabilir (dolandırıcılık paketi, web.config dosyasını paketten kaldırmadım veya pakette web.config dosyasının olduğundan emin olun. Örneğin, yinelenen ve yanlış düğümü kaldırarak bu sorunu giderir.

    <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 ila 24 arasındaki hatları kaldırarak yapıyı düzeltir.


2

Ayrıca, Views klasörünüzün içindeki web.config dosyasında derlemenin sürümünü kontrol edin ve eşleştiğinden emin olun. Bazen bu konumda ikinci bir web.config olduğunu unutuyorum.



2

Projeyi başka bir çözüme taşıdıktan sonra bir grup montaj dosyasıyla aynı sorunu yaşadım.

Benim için web.configdosya şu derlemeyi eklemeye çalışıyordu:

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

Projedeki referansın sürüme işaret ettiğini düşündüm (referansa 3.0.0.0tıklayın ve özelliklerin altına kaydırın). Bu yüzden web.configdosyadaki referans sürümünü değiştirdim .

Bunun sadece bir tür hata olup olmadığını bilmiyorum. Diğer tüm referansları eklemeyle ilgili sorun, referansların yapılandırma dosyasında görünmesi, ancak aslında projede (çözüm gezgini içinde) hiç başvurulmaması ve gerekli dosyaların proje dosyalarının geri kalanıyla kopyalanmamasıydı. muhtemelen olmamaktan dolayı"copy local = true"

Şimdi, bu derlemeleri eklenebilir derlemelerde bulamadım (referansı sağ tıklatıp derlemelerden veya uzantılardan eklemeye çalışarak). Bunun yerine, ihtiyacım olan tüm montajları ve referansları ekleyen yeni bir MVC çözümü oluşturdum ve bunları çözüm gezginindeki yeni projeler referansları altında bulup referans için özellikler penceresinde yollarını buluyorum.

Sonra ihtiyacım olan kütüphaneleri diğer projeye kopyaladım ve referans verdim.


1

Her şeyi denedikten sonra ve hala bu benim çözüm oldu: ben hatırladım ve ben en son Visual Studio MVC sürümünü güncelleme hata böylece başka bir Visual Studio (farklı bilgisayar) projeyi çalıştırmak ve daha sonra dll-s yükledi ve çalıştı. belki birine yardım eder ...


0

Jenkins'i .net projeleriyle kullanıyorum ve MVC 4 referanslarıyla ilgili sorunlar yaşadım.

Sonunda kullanarak kayıt defterine dayalı bir .Net başvuru arama motoru işlevselliği kullanarak sorunumu çözdü:

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

Alt anahtarı oluşturabilir ve varsayılan anahtarı "c: \ myreferenceedir" olarak ayarlayabilirsiniz.

MVC sürümleri ve ayrıca ASP.net Web sayfaları ile beni kurtardı.

"Referans Ekle İletişim Kutusuna" referans eklemek için kullanışlıdır

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


0

Diğerlerinin de belirttiği gibi, bu referansları Copy Localayarlanmış görsel stüdyolara ekleyin true. (Ayrıca eklemek zorunda kaldım System.Web.Webpages)

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

0

NuGet Paketlerini Yönet'i kullanarak "Microsoft ASP.NET Razor" u ekledim.

Referans Ekle ile, herhangi bir nedenle, sadece System.Web.Helpers 1.0.0 ve 2.0.0 ... vardı ama 3.0.0 değil.

Bana çalışan başka bir seçenek, System.Web.Mvc ve System.Web.Http ... referanslarını silmekti, sonra bunları csproj dosyasındaki paket konumlarına göz atarak yeniden ekleyin (projeyi en kolay şekilde düzenleyebilirsiniz bir metin düzenleyici):

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.