Saya memiliki aplikasi web kecil. Yang berfungsi dengan baik sampai saya menambahkan dua genericHandler di aplikasi saya.
Saya telah membuat perubahan berikut untuk penangan http
<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.
Saya menggunakan asp.net4.0 dan C #. Saya tidak menggunakan MVC
Pada host lokal, ini berfungsi dengan baik.
Tetapi ketika saya menghosting kode yang diterbitkan itu memberi saya kesalahan di atas.
Pelacakan Tumpukan: -
[FileNotFoundException: Tidak dapat memuat file atau rakitan 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0
[InvalidOperationException: Metode inisialisasi awal pra-aplikasi Mulai pada tipe System.Web.Http.WebHost.PreApplicationStartCode melontarkan pengecualian dengan pesan galat berikut: Tidak dapat memuat file atau rakitan 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35 'atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan ..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (metode ICollection`1) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment.Initialize ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve
[HttpException (0x80004005): Metode inisialisasi pra-aplikasi mulai Mulai jenis System.Web.Http.WebHost.PreApplicationStartCode melontarkan pengecualian dengan pesan galat berikut: Tidak dapat memuat file atau rakitan 'Microsoft.Web.Infrastructure, Version = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan ..] System.Web.HttpRuntime.FirstRequestInit (konteks HttpContext) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (konteks HttpContext) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IttpContextRequestNotificationPrivate) +4866485
Jawaban:
Tampaknya Microsoft.Web.Infrastructure.dll tidak diinstal di GAC, meskipun .net (4.0 atau 4.5 atau lainnya) berhasil diinstal di Windows Server. Di localhost (biasanya klien Windows), sepertinya itu berada di GAC ketika alat / platform (Visual Studio dll.) Diinstal.
Sebagai salah satu kemungkinan perbaikan, silakan coba berikut ini:
Jalankan perintah berikut di Package Manager Console. (Jika Anda menggunakan Visual Studio, ini dapat dicapai melalui opsi menu "Tools -> Library Package Manager -> Package Manager Console :)
PM> Install-Package Microsoft.Web.Infrastructure
Anda akan melihat pesan berikut jika berhasil diinstal.
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'. Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
Anda akan melihat bahwa Microsoft.Web.Infrastructure.dll sekarang telah ditambahkan sebagai Referensi (dapat dilihat di folder referensi proyek Anda di Solution Explorer)
Jika Anda melihat properti referensi ini, Anda akan melihat bahwa " Salin Lokal " telah disetel ke " Benar " secara default.
Sekarang ketika Anda "Publikasikan" proyek Anda, Microsoft.Web.Infrastructure.dll akan digunakan.
sumber
Saya menginstal MVC4 melalui WPI dan itu membantu saya.
sumber
Saya memiliki masalah yang sama. Ketika saya mencoba jawaban yang diterima (rockyb), saya mendapat pesan bahwa paket tersebut sudah diinstal dan ditugaskan ke proyek saya. Namun, ketika saya memeriksa daftar referensi, itu TIDAK direferensikan.
Microsoft.Web.Infrastructure diinstal di folder paket solusi saya. Alih-alih menggunakan NuGet untuk menambahkan paket, saya hanya menggunakan opsi Add Reference. Di sisi kiri jendela pop-up, saya memilih Browse, lalu menekan tombol Browse di bagian bawah jendela. Saya menavigasi ke folder paket di bawah folder tempat solusi saya berada, lalu mengebor ke ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 dan mengklik Microsoft.Web.Infrastructure .dll. Setelah mengklik OK, paket muncul di daftar Referensi saya. Saya menggunakan opsi Paket Penyebaran Web untuk menerapkan situs web saya dan semuanya berfungsi.
sumber
Mengapa tidak menyalin file Microsoft.Web.Infrastructure.dll secara manual ke folder BIN server. Ini bekerja untuk. Proyek saya adalah Situs VS2010.
File ini dapat ditemukan:
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40
Cukup salin dan tempel di folder BIN.
Anda mungkin perlu memasukkan ini di web.config jika Anda belum memilikinya
<compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation>
Referensi: http://thedeveloperblog.com/
sumber
Saya menemukan masalahnya. Alih-alih menambahkan
(.cs)
file kelas karena kesalahan saya telah menambahkanWeb API Controller
kelas yang menambahkan file konfigurasi dalam solusi saya. Dan file konfigurasi itu mencari DLL yang disebutkan (Microsoft.Web.Infrastructure 1.0.0.0). Ini berfungsi ketika saya menghapus file itu, membersihkan aplikasi dan kemudian menerbitkannya.sumber
Setelah menginstal Microsoft.Web.Infrastructure melalui
Nuget-Package Manager
PM> Install-Package Microsoft.Web.Infrastructure
Salin
Microsoft.Web.Infrastructure.dll
secara manual dariNuget-Package
folder di aplikasi web Anda dan kemudian tempelkan di folder bin aplikasi web Anda yang digunakan di server web.Itu berhasil untuk saya.
sumber
Update-Package -reinstall Microsoft.Web.Infrastructure
tidak berhasil untuk saya, karena saya terus menerima kesalahan bahwa itu sudah diinstal.Saya harus menavigasi ke folder Microsoft.Web.Infrastructure.1.0.0.0 di folder paket dan secara manual menghapus folder itu.
Setelah melakukan ini, jalankan
Install-Package Microsoft.Web.Infrastructure
menginstalnya.Catatan:
CopyLocal
secara otomatis disetel ke true.sumber
Saya mengalami masalah yang sama dan "Microsoft.Web.Infrastructure.dll" tampaknya hilang. Saya telah mencoba beberapa saran dan menginstal MVC, dll. Dan tidak ada yang membantu. Solusinya adalah dengan menginstal "Web Services Enhancements (WSE) 1.0 SP1 for Microsoft .NET" yang mencakup Microsoft.Web.Infrastructure.dll. Tersedia di: http://www.microsoft.com/en-gb/download/details.aspx?id=4065
sumber
Saya memiliki masalah yang sama. Saya mencoba menginstal Visual Studio 2010 SP1 tetapi tidak berhasil.
Akhirnya saya mendapatkan Microsoft.Web.Infrastructure.dll dari rekan kerja. Anda dapat menemukan dll ke PC teman Anda di mana proyek tersebut bekerja dengan sempurna. Cobalah untuk mencari dll ke File Temp / Sementara ASP.NET. Pergi ke Temp menggunakan% temp% ke dalam jendela run.
Setelah mendapatkan dll ke pc Anda, cukup tambahkan referensi ke proyek Anda dan itu akan berhasil.
sumber
Menerbitkan ulang situs memperbaiki masalah saya.
sumber
Menghadapi masalah yang sama dan sayangnya tidak ada yang berfungsi di sini. Akhirnya, saya menemukan tautan ini: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/
Ternyata solusinya agak bodoh: atur copy-local untuk dll microsoft.web.infrastructure ke False, lalu setel kembali ke True.
Ngomong-ngomong, menurut saya yang terjadi adalah ada dua versi dll microsoft.web.infrastructure, satu sudah diinstal sebelumnya di GAC, dan satu lagi yang sekarang menjadi paket nuget. Saya pikir yang satu menutupi yang lain, sehingga menyebabkan masalah. Dalam kasus khusus saya, di server build saya, saya membutuhkannya untuk disalin ke folder (folder ini kemudian di-zip dan dikirim ke penyebaran). Saya kira sistem memiliki salinan secara lokal dan hanya berpikir "tidak, ini akan baik-baik saja"
sumber
Saya memiliki situs web file saja. Menambahkan MVC 5 ke aplikasi formulir web (menargetkan net45). Saya harus memodifikasi package.config
package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45"
untuk
package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true"
untuk memulai di kotak lokal dalam mode debug (sebelumnya memiliki kesalahan yang dijelaskan atas). Menjalankan VS 2017 di Windows 7 ... dibuka melalui File> Buka> Situs Web> File (pilih direktori root di luar IIS).
sumber
Saya mengalami masalah yang sama setelah memutakhirkan banyak paket NuGet.
Saya telah mencoba semua jenis penghapusan, pembersihan, pemasangan ulang yang dijelaskan di sini dan beyong tidak berhasil. Referensi tersebut tidak memiliki Microsoft.Web.Infrastructure meskipun manajer NuGet menunjukkan bahwa itu diinstal.
Masalahnya diselesaikan dengan mengganti:
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
dengan
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
di packages.config. Pelakunya tampaknya "net45".
sumber