Hata Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35


92

Küçük bir web uygulamam var. Uygulamama iki genericHandler ekleyene kadar iyi çalışıyordu.

Http işleyicisi için aşağıdaki değişiklikleri yaptım

 <system.web>
    <authentication mode="Forms" >
        <forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
        </forms>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
    <compilation debug="true" targetFramework="4.0" />

    <httpHandlers>
        <!--Code Log Handler-->
        <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
    </httpHandlers>
    <customErrors mode="Off">
        <error statusCode="404" redirect="Templates/PageNotFound.html" />
    </customErrors>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <!--Code Log Handler-->
        <add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
        <!-- SMS SENDER-->
        <add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
    </handlers>
</system.webServer>

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Asp.net4.0 ve C # kullanıyorum. Yerel ana bilgisayarda MVC kullanmıyorum
, iyi çalışıyor.
Ancak yayınlanan kodu barındırdığımda bana yukarıdaki hatayı veriyor.

Yığın izleme:-

[FileNotFoundException: Dosya veya 'Microsoft.Web.Infrastructure, Sürüm = 1.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35' veya bağımlılıklarından biri yüklenemedi. Sistem belirtilen dosyayı bulamıyor.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0

[InvalidOperationException: Uygulama öncesi başlatma başlatma yöntemi Start on type System.Web.Http.WebHost.PreApplicationStartCode, aşağıdaki hata iletisiyle bir istisna attı: Dosya veya derleme yüklenemedi 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Kültür = tarafsız, PublicKeyToken = 31bf3856ad364e35 'veya bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor ..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (ICollection`1 yöntemleri) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment.Initialize ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005): Uygulama öncesi başlatma başlatma yöntemi Start on type System.Web.Http.WebHost.PreApplicationStartCode aşağıdaki hata iletisiyle bir istisna attı: Dosya veya derleme yüklenemedi 'Microsoft.Web.Infrastructure, Sürüm = 1.0 .0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'veya bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor ..] System.Web.HttpRuntime.FirstRequestInit (HttpContext bağlamı) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext bağlamı) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate) +4866485


1
Microsoft.Web.Infrastructure.dll'yi nuget paketinden kurmak benim için çalıştı.
ATUL SHARMA

Yanıtlar:


198

.Net (4.0 veya 4.5 veya diğer) Windows Server'da başarıyla kurulsa bile , Microsoft.Web.Infrastructure.dll'nin GAC'ye yüklenmediği anlaşılıyor . Localhost'ta (tipik olarak Windows istemcisi), araçlar / platform (Visual Studio vb.) Yüklendiğinde GAC'de gibi görünüyor.

Olası bir çözüm olarak lütfen aşağıdakileri deneyin:

  1. Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın. (Visual Studio kullanıyorsanız buna "Araçlar -> Kitaplık Paket Yöneticisi -> Paket Yöneticisi Konsolu :) menü seçenekleri aracılığıyla ulaşılabilir :)

    PM> Install-Package Microsoft.Web.Infrastructure
    

    Başarıyla kurulursa aşağıdaki mesajları göreceksiniz.

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
    
  2. Microsoft.Web.Infrastructure.dll'nin artık Referans olarak eklendiğini fark edeceksiniz (Çözüm Gezgini'nde projenizin referanslar klasöründe görülebilir)

  3. Bu referansın özelliklerine bakarsanız, " Yerel Kopyala " nın varsayılan olarak " Doğru " olarak ayarlandığını göreceksiniz .

  4. Artık projenizi "Yayınladığınızda", Microsoft.Web.Infrastructure.dll dağıtılacaktır.


2
Teşekkürler, bu sorunumu çözdü! Webforms uygulamamda bir WebApi denetleyicisi kullanıyordum ve söz konusu hata mesajı nedeniyle dağıtım başarısız oldu. Projeme referans ekleyerek ve .dll üzerine kopyalayarak, çalışmasını sağladım.
magnattic

1
Başlangıçta "Bu Çözüm İçin NuGet Paketlerini Yönetin" arabiriminden geçmeyi denedim, ancak Microsoft.Web.Infrastructure.dll'nin herhangi bir yerde bir referans göremememe rağmen zaten kurulu olduğunu söyledi. Komut satırınızı çalıştırarak en üste yükledim, bir referans görüyorum, yerel kopyalamak için ayarlanmış, yeniden konuşlandırılmış ... düzeltildi. Teşekkürler!!
hardba11

1
Paket Yöneticisi ile yükledim ama çoktan yüklendi. Ancak projedeki Referansı göremedim. Ben kendim eklendi ve =) True olarak kopyala Local set Yani
Akira Yamamoto

27
Bazı durumlarda "Webapp zaten 'Microsoft.Web.Infrastructure 1.0.0.0' başvurusuna sahip" mesajını aldığınızı unutmayın. Bu gibi durumlarda "Update-Package Microsoft.Web.Infrastructure -Reinstall" kullanın.
Robba

1
Zaten yükledim ama 'Yerel Kopyala' yanlış olarak ayarlandı. Bunu doğru yapmak onu düzeltti! Teşekkürler
Lyall

19

MVC4'ü WPI üzerinden kurdum ve bana yardımcı oldu.


1
Sorunum sunucuda olduğu, ancak makinemde olmadığı için bu benim için çalıştı.
John

14

Ben de aynı sorunu yaşadım. Kabul edilen cevabı (rockyb) denediğimde, paketin zaten kurulu olduğu ve projeme atandığı mesajını aldım. Referans listesini kontrol ettiğimde, buna referans VERİLMEMİŞTİR.

Microsoft.Web.Infrastructure, çözümümün paketler klasörüne yüklendi. Paketi eklemek için NuGet kullanmak yerine, Referans Ekle seçeneğini kullandım. Açılır pencerenin sol tarafında, Gözat'ı seçtim ve ardından pencerenin altındaki Gözat düğmesine bastım. Çözümümün bulunduğu klasörün altındaki paketler klasörüne gittim, ardından ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 'a inip Microsoft.Web.Infrastructure' a tıkladım. .dll. Tamam'a tıkladıktan sonra, paket Referanslar listemde göründü. Web sitemi dağıtmak için Web Dağıtım Paketi seçeneğini kullandım ve her şey çalıştı.


1
Para. Bu yanıt çok yeni olduğundan ve kabul edilen (benim için de işe yaramadı) çok eski olduğundan, bunun Visual Studio'nun güncellenmiş bir sürümüyle ilgisi olduğunu varsayıyorum. Teşekkürler!
chiliNUT

1
Robba'nın farklı bir cevapla ilgili bir yorumda söylediği gibi, bunun referans listesinde olmaması (ancak paketin kurulu olması) problemini "Update-Package Microsoft.Web.Infrastructure -Reinstall" ile çözebilirsiniz. Sanırım bu, meclise göz atmaktan daha iyi.
Jim W, Monica'nın

9

Neden Microsoft.Web.Infrastructure.dll dosyasını manuel olarak sunucu BIN klasörüne kopyalamıyorsunuz? Bu işe yarar. Projem VS2010 Web Sitesi.

Bu dosyanın yeri şu şekildedir:

C: \ Program Dosyaları (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Paketler \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40

Sadece BIN klasörüne kopyalayıp yapıştırın.

Zaten sahip değilseniz, muhtemelen bunu web.config dosyasına eklemeniz gerekir.

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

Referans: http://thedeveloperblog.com/


6

Sorunu buldum. (.cs)Yanlışlıkla bir sınıf dosyası eklemek yerine, çözümüme bir Web API Controlleryapılandırma dosyası ekleyen bir sınıf ekledim. Ve bu yapılandırma dosyası belirtilen DLL'yi (Microsoft.Web.Infrastructure 1.0.0.0) arıyordu. Bu dosyayı kaldırdığımda, uygulamayı temizlediğimde ve ardından yayınladığımda işe yaradı.


4

Microsoft.Web.Infrastructure'ı kurduktan sonra Nuget-Package Manager

PM> Install-Package Microsoft.Web.Infrastructure

Web uygulamanızdaki klasörden Microsoft.Web.Infrastructure.dllmanuel olarak kopyalayın Nuget-Packageve ardından web sunucusunda dağıtılan web uygulamanızın bin klasörünüze yapıştırın.

paketleri \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll

Benim için çalıştı.


Microsoft.Web.Infrastructure'ı Kaldırma Paketi (ardından Team Foundation Server kullanıyorsanız değişiklikleri kontrol edin) ve ardından Install-Package Microsoft.Web.Infrastructure benim için çalıştı.
GJKH

3
bazen bir microsoft ürününü çalıştırmanın tek yolu
hack'tir

Bu benim için de çalıştı. evet bu bir hack'ti ama çok zaman kazandırdı. çöp kutusundan otomatik olarak nasıl silindiği gizemdir
Heemanshu Bhalla

4

Update-Package -reinstall Microsoft.Web.Infrastructure zaten yüklü olduğu hataları almaya devam ettiğim için benim için çalışmadı.

Paketler klasöründeki Microsoft.Web.Infrastructure.1.0.0.0 klasörüne gitmem ve bu klasörü manuel olarak silmem gerekti.

Bunu yaptıktan sonra koşarak Install-Package Microsoft.Web.Infrastructure kurdu.

Not: CopyLocalotomatik olarak true olarak ayarlandı.


benim durumumda işe yaramadı. Altyapı klasörünü paketlerden ve yerleştirilmiş paketten tekrar
siliyorum


0

Ben de aynı sorunu yaşadım. Visual Studio 2010 SP1'i yüklemeyi denedim ama işe yaramadı.

Sonunda meslektaşımdan Microsoft.Web.Infrastructure.dll dosyasını aldım. Dll'yi, projenin mükemmel bir şekilde çalıştığı arkadaşlarınızın bilgisayarında bulabilirsiniz. Dll'yi Temp / Temporary ASP.NET Files'da aramayı deneyin. Çalıştırma penceresine% temp% kullanarak Temp'e gidin.

Bilgisayarınıza dll yükledikten sonra projenize referans ekleyin ve çalışacaktır.



0

Aynı sorunla karşı karşıyaydı ve maalesef burada hiçbir şey çalışmıyordu. Sonunda şu bağlantıyla karşılaştım: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

Çözümün aptalca olduğu ortaya çıktı: microsoft.web.infrastructure dll için kopya-yerel'i False olarak ayarlayın ve ardından True olarak ayarlayın.

Bu arada, microsoft.web.infrastructure dll'nin biri GAC'ye önceden yüklenmiş, diğeri de şu anda bir nuget paketi olan iki sürümünün olduğunu düşünüyorum. Bence biri diğerini maskeliyor, bu nedenle sorunlara neden oluyor. Benim özel durumumda, derleme sunucumda, bir klasöre kopyalanması gerekiyor (bu klasör daha sonra sıkıştırılır ve dağıtıma gönderilir). Sanırım sistemin yerel olarak bir kopyası vardı ve sadece "hayır, iyi olacak" diye düşündüm


0

Yalnızca dosyalar web sitem var. Web formları uygulamasına MVC 5 eklendi (net45'i hedefliyor). Package.config dosyasını değiştirmek zorunda kaldım

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45"

-e

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true"

hata ayıklama modunda yerel kutuda başlatılması için (daha önce en çok açıklanan hata vardı). VS 2017'yi Windows 7'de çalıştırma ... Dosya> Aç> Web Sitesi> Dosya aracılığıyla açılır (IIS'nin dışındaki kök dizini seçin).


0

Bir grup NuGet paketini yükselttikten sonra da aynı sorunu yaşadım.
Burada anlatılan her türlü silme, temizleme, yeniden yükleme işlemlerini denedim ve boşuna. NuGet yöneticisinin yüklü olduğunu göstermesine rağmen başvurularda Microsoft.Web.Infrastructure yoktu.

Sorun, değiştirilerek çözüldü:

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

ile

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />

package.config dosyasında. Suçlu görünüşe göre "net45".

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.