“Pesan Kesalahan Parser: Tidak dapat memuat jenis” di Global.asax

203

Saya sedang mengerjakan proyek MVC3 dan menerima kesalahan berikut:

Pesan Kesalahan Parser: Tidak dapat memuat ketik 'GodsCreationTaxidermy.MvcApplication'.

Kesalahan Sumber:

Baris 1: <%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

Kesalahan yang saya dapatkan adalah tidak dapat memuat GodsCreationTaxidermy.Core.MvcApplication tetapi dalam screen shot ini bagian Core tidak ditampilkan dalam kesalahan:

Screenshot Halaman Galat

Adakah yang punya ide atau solusi untuk kesalahan ini?

PsychoCoder
sumber
8
Apakah Anda benar-benar memiliki kelas GodsCreationTaxidermy.Core.MvcApplication di aplikasi Anda? Jika tidak tolong buat yang sama dan kompilasi proyek. Pasti akan berhasil.
Shailesh
4
Ya saya punya GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder
File Global.asax yang tampaknya digunakan (sesuai dengan tangkapan layar) terlihat berbeda dari yang Anda perlihatkan.
Darin Dimitrov
periksa untuk melihat apakah string Inherits sama dengan path ke kelas dalam aplikasi Anda (namespace + pathname), yaitu keduanya GodsCreationTaxidermy.Core.MvcApplication
linkerro
Itulah salah satu masalah Darin, tidak peduli apa yang saya lakukan selalu meninggalkan bagian Inti
PsychoCoder

Jawaban:

175

Server web lokal Anda menjalankan kode yang berbeda dari yang sebenarnya Anda kerjakan. Pastikan Anda telah menghentikan debugging, hentikan server web lokal Anda, bersihkan dan bangun kembali seperti yang disarankan Peter, periksa ulang global.asax dan global.asax.cs Anda, dan coba lagi.

Jika ini tidak berhasil dan Anda menggunakan IIS lokal, coba hapus situs di IIS Manager dan buat ulang secara manual.

Rasio facio
sumber
4
Kesalahan yang sangat aneh memang. Saya dikerahkan ke IIS di server dan mendapatkan ini. Dibersihkan dan dikompilasi kembali bekerja untuk saya juga.
Piotr Kula
2
Clean / Rebuild + menciptakan kembali Direktori Virtual, dan kemudian berhasil.
fantastik78
4
Punya masalah ketika saya memiliki proyek yang sama terbuka dalam dua contoh Visual Studio. Oleh karena itu saya memiliki dua contoh menjalankan IIS Express. Saya harus menutup satu dan kemudian diselesaikan.
lvmeijer
4
Anda juga dapat mencoba menghapus folder bin / obj di proyek Anda.
arni
1
Saya mengikuti instruksi ini dan memberikan beberapa pembersihan / rekondisi tambahan, mengubah spasi putih dalam file .xs, memformat ulang monitor saya, dan melakukan jig tawa yang disertai dengan pipa-pipa Pan dan yang tampaknya melakukan trik.
MrBoJangles
207

Periksa apakah jalur keluaran proyek (properti proyek / Bangun) diatur ke bindan tidak bin\Release ataubin\Debug

Untuk beberapa alasan IIS (VS development Server atau IIS Lokal) selalu mengakses perpustakaan dari bindirektori (dan tidak akan mencari subdirektori)

Vincent de Lagabbe
sumber
27
Terima kasih. Memperbaiki masalah saya, aplikasi saya disetel untuk menggunakan bin \ Debug, mengubahnya menjadi bin yang menyelesaikannya. Terimakasih banyak.
Joey Bob
Sangat menarik untuk mengetahui bahwa proyek ASP.NET tidak menggunakan bin jalur keluaran default / $ (Konfigurasi) /. Terima kasih banyak atas jawabannya!
Jaanus Varus
2
@ JamesPusateri: hati-hati. Setiap kali Anda memulai, ia akan menggunakan apa yang ada di / bin. Jadi mungkin hasil dari bangunan yang Anda buat ini setelah Anda mengubahnya.
Vincent de Lagabbe
1
Wow, pada 2018 IIS masih bekerja dengan cara ini. Buruk, sangat buruk untuk Microsoft. Terima kasih!
Rodrigo T.
1
tidak ada yang berubah selama hampir 7 tahun, saran masih membantu
Yuriy Vikulov
33

Coba modifikasi file global.asax Anda (sederhana tambahkan spasi di suatu tempat) dan jalankan kembali. ini akan memaksa server web bawaan untuk menyegarkan dan mengkompilasi ulang file global.asax.

Juga lakukan pembersihan dan pembangunan kembali - harus memperbaiki masalah

Peter Munnings
sumber
4
Memodifikasi global.asax tidak melakukan apa pun untuk saya, tetapi yang bersih dan membangun kembali memperbaiki masalah :)
NightShovel
Saya memiliki masalah ini ketika saya kehabisan daya. Bersihkan dan bangun kembali membantu. Terima kasih!
Gorgi Rankovski
Pembersihan gagal. Gagal membangun. Saya tidak punya masalah dengan jalur build saya. Namun ini berhasil. Terima kasih!
egandalf
Terima kasih atas jawaban Anda, Tn. Munnings
dada
30

Ini kadang-kadang terjadi jika Anda mengubah informasi namespace (tingkat proyek atau kelas) setelah global.asaxdihasilkan.

Klik kanan pada Global.asax file tersebut dan pilih "Open With" dan kemudian pilih "XML (Text) Editor with Encoding" (editor lain mungkin berfungsi juga, tapi ini yang saya gunakan).

Kemudian edit bagian "Warisan" dalam direktif XML

<% @ Application Codebehind = "Global.asax.cs" Inherits = "GodsCreationTaxidermy.MvcApplication" Language = "C #"%>)

sehingga cocok dengan nama lengkap sebenarnya dari kelas Aplikasi Anda. Dan itu saja.

Pilihan lain adalah menyalin semua kode Anda dari Global.asax.cs dan kemudian menghapus dan membuat file Global.asax lain (dan kemudian menyalin kode kembali ke Global.asax.cs).

Paul Easter
sumber
Ini juga bekerja untuk saya. Saya telah mengubah namespace untuk perakitan untuk semua proyek dalam solusi. Jadi harus mengedit Global.asaxfile seperti yang dinyatakan dalam jawaban ini, dan membuatnya cocok dengan apa yang ada di pengaturan Konfigurasi Proyek.
Shiva
21

Saya menutup dan membuka kembali studio visual dan itu berhasil.

Gagan
sumber
4
tutup SEMUA studio visual Anda
Jboy Flaga
11
Pertama-tama kita semua harus mencoba keluar dari mobil, menutup semua pintu, lalu kembali lagi.
piyama
tidak, Anda harus menutup pintu pada SEMUA mobil Anda, pada saat yang sama.
BlackICE
17

Saya harus pergi ke BUILD -> CONFIGURATION MANAGER dan - ahem - centang kotak di sebelah proyek saya untuk memastikan itu benar-benar dibangun.

Ron Newcomb
sumber
2
Saya tidak mengerti downvote. Ini berpotensi menjadi solusi. Ini sebenarnya lebih relevan daripada yang dipikirkan kebanyakan ... Jika tidak dicentang, ini tidak selalu merupakan lokasi yang paling jelas. Apalagi ketika ada beberapa konfigurasi.
Anthony Mason
Saya suka jawaban dan alasan Anda!
UKM
1
Ini adalah masalah saya juga, dan saya tidak tahu bagaimana proyek-proyek terpilih dari konfigurasi.
Seth
5

Saya memiliki masalah ini hari ini, dan butuh beberapa saat untuk menemukan penyebabnya.

Pada dasarnya, proyek VS2015 utama saya adalah termasuk sub-proyek yang telah dibangun menggunakan versi yang lebih tinggi dari .Net Framework.

Anehnya, ketika Anda memiliki masalah ini, VS2015 akan dengan senang hati melaporkan bahwa solusi telah dibangun dengan baik, tetapi ketika Anda mencoba dan menjalankan situs web, itu hanya memberi Anda kesalahan yang menyesatkan, menunjukkan bahwa Anda Global.asax.cs file salah.

Jadi, jika Anda melihat kesalahan ini, dan Pembersihan / Pembangunan Kembali tidak membantu, buka Referencespohon Proyek Anda , dan periksa tanda seru.

masukkan deskripsi gambar di sini

Juga, periksa Outputjendela Anda untuk pesan seperti ini:

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

Solusinya, tentu saja, adalah klik kanan pada proyek utama Anda, pilih tab atas, "Aplikasi", dan ubah versi Target Framework ke versi yang lebih tinggi yang cocok dengan sub-proyek Anda.

Ini menjengkelkan bahwa Visual Studio 2015 akan membiarkan Anda sepenuhnya membangun dan menjalankan Solusi yang diam-diam mengandung masalah ini. Ia meminta masalah ..!

Mike Gledhill
sumber
2

Anda juga dapat memeriksa properti situs Anda di IIS. (Di IIS, klik kanan situs dan pilih Properti.) Pastikan pengaturan Jalur Fisik menunjuk ke jalur yang benar untuk aplikasi Anda, bukan aplikasi lain. (Itu memperbaiki kesalahan ini untuk saya.)

Rob Cole
sumber
2

Saya baru saja menemukan ini pada aplikasi MVC5 dan tidak ada yang berhasil untuk saya. Ini terjadi tepat setelah saya mencoba melakukan pengembalian SVN ke versi proyek yang lebih lama.

Saya harus menghapus global.asax.cs dan kemudian menambahkan yang baru dengan mengklik kanan Project -> Add New Item -> Global.asax dan akhirnya ITU memperbaikinya.

Hanya berpikir itu mungkin membantu seseorang.

iAteABug_And_iLiked_it
sumber
Jika itu memperbaikinya untuk Anda, mungkin ada sesuatu yang kacau tentang properti "Build action" dari global.asax.csfile yang ada . Itu harus diatur ke "Kompilasi". Tindakan build dari global.asaxfile itu sendiri harus diatur ke "Konten".
Steven Liekens
Saya melakukan persis seperti yang dilakukan @iAteABug_And_iLiked_it, dan masalahnya terpecahkan!
zinczinc
2

Saya harus melaporkan bahwa saya mencoba setidaknya 4 saran dari pos ini. Tak satu pun dari mereka yang bekerja. Namun saya senang melaporkan bahwa saya pulih dengan mengambil dari cadangan. Hanya perlu memperbarui perubahan kode terakhir saya dari file log. Butuh waktu kurang dari 10 menit. Menghabiskan 3 kali membaca posting ini dan mencoba saran lainnya. Maaf.

Itu adalah kesalahan yang sangat aneh. Semoga beruntung untuk orang lain yang menghadapi gremlin ini.

htm11h
sumber
2

Saya memiliki masalah yang sama ketika saya memiliki 2 contoh Visual Studio menjalankan proyek yang sama. Jadi saya menutup kedua Visual Studio dan hanya membuka satu instance dan Ini berfungsi dengan baik sekarang!

Seyed Morteza Mousavi
sumber
2

Saya sedang mengerjakan proyek web ASP.NET 'folder berbasis' yang lebih lama (yang saya benci) - dan menemukan ini untuk memperbaiki saya:

Buat App_Codefolder (jika Anda belum memilikinya)

Pindahkan Global.asax.vbfile ke dalam App_Codefolder

Markup di Global.asax dapat mengabaikan ruang nama apa pun (setidaknya, untuk gaya proyek ini, afaik):

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

... di mana "MyApp" adalah nama kelas yang didefinisikan di Global.asax.vb

bkwdesign
sumber
2

"BUILD -> MANAJER KONFIGURASI dan - ahem - centang kotak di sebelah proyek saya untuk memastikan itu benar-benar dibangun." Itu dan pergi ke folder proyek di windows explorer, menekan opsi dan menghapus centang pada kotak centang "Baca saja" membantu.

Bencana
sumber
hanya itu berhasil untuk saya. Proyek belum membangun opsi yang diaktifkan. Saya tidak tahu mengapa tetapi solusi ini adalah apa yang saya butuhkan, terima kasih.
willyMon
1

Kosongkan folder bin. Bangun semua perpustakaan kelas dependen dan rujuk di proyek utama, dan bangun solusi lengkap.

Sumber

Vignesh Subramanian
sumber
1

Saya juga menghadapi masalah yang sama. Meskipun mengikuti setiap Jawaban itu tidak berhasil. Kemudian saya mengubah "Inherits = namespace.class " menjadi "Inherits = memenuhi syarat merakit nama " yaitu "Inherits = namespace.class, assemblyname, Version =, Culture =, PublicKeyToken = " Semoga membantu.

Mahesh
sumber
1

Ini juga dapat terjadi jika Anda secara tidak sengaja lupa untuk mengatur solusi VS Anda menjadi "Multiple Startup Projects" jika Anda menjalankan Web dan WebApi dari solusi yang sama.

Anda dapat memeriksanya dengan mengklik kanan pada Solution di Solution Explorer dan pilih 'Properties ". Kemudian cari' Startup Projects '.

Dave Black
sumber
Tambang saya mirip dengan ini: Saya menjalankan proyek API yang salah dalam solusinya. Saya benar-benar memiliki kesalahan kompiler di API saya pikir saya sedang berjalan, tetapi VS tidak mengambilnya ketika saya menjalankan solusi, bahkan setelah bersih.
Yohanes
1

Hapus .vsdirektori dari root solusi. Bersih. Membangun kembali.

Masalah ini membuatku gila sesekali dan aku akhirnya berakhir di sini mencari-cari jawaban. Saya menduga ada beberapa penyebab yang dapat menghasilkan pengecualian ini, ini pernah bekerja untuk saya.

Patrick Borkowicz
sumber
Beberapa jam mencoba seribu saran lain dan inilah yang melakukannya untuk saya. Aplikasi saya berjalan dengan baik di Visual Studio, baik dalam konfigurasi debug dan rilis, tetapi begitu diterbitkan untuk IIS saya mendapatkan kesalahan. Menghapus folder .vs dan menggunakan kembali memperbaiki masalah.
Philip Stratford
1

Ya, saya membaca semua jawaban. Namun, jika Anda adalah saya dan telah mencabut semua yang tersisa dari rambut Anda, maka coba periksa folder \ bin. Seperti kebanyakan file proj mungkin memiliki beberapa konfigurasi yang dikelompokkan di bawah elemen XML PropertyGroup, maka saya mengubah OutputPathnilai dari 'bin \ Debug' untuk menghapus bagian '\ Debug' dan Rebuild. Ini menempatkan file dalam folder \ bin yang memungkinkan Express IIS untuk menemukan dan memuat build. Saya bertanya-tanya apa cara yang benar untuk mengelola bangunan yang berbeda ini sehingga penyebaran debug lokal dapat menemukan dan memuat lingkungan target.

Adam Cox
sumber
Ini adalah satu-satunya hal yang berhasil. Begitu banyak mayat yang terkubur ... hal-hal seperti ini yang membuat saya serius mempertimbangkan panggilan lain.
doveryai
0

Masalah ini saya selesaikan dengan memberikan izin yang benar dari folder tersebut serta memeriksa dari IIS.

Saya diberikan izin kepada semua orang karena saya menguji di lingkungan lokal saya. Namun dalam mode publikasi saya pikir kami hanya memberikan izin kepada pengguna ASP.Net.

Ajay2707
sumber
0

Saya juga mendapat kesalahan yang sama ... periksa nama Aplikasi yang Anda kembangkan dengan benar yaitu. namespace dan nama assembly yang dibagikan dan juga mencoba mengubah secara fisik nama folder yang dibuat untuk aplikasi, semua ini harus sama dengan nama dalam namespace di atas yang hadir dalam file global.asax

Bhavik
sumber
0

Saya juga mendapat kesalahan yang sama ... periksa Konfigurasi IIS Direktori Virtual Anda dan pastikan Properti - ASP.NET - Versi ASP.NET sama dengan Properti Proyek - Aplikasi - Kerangka Target. (Itu memperbaiki kesalahan ini untuk saya.)

montearg70
sumber
0

Aplikasi saya dibuat dalam versi VS yang lebih lama, dan tidak memiliki folder bin. Saya telah memutakhirkannya ke versi yang lebih baru, dan memiliki mimpi buruk untuk menggunakannya. Saya akhirnya melacak kesalahan ini hingga Project> Properties> Application. Kerangka Target ditetapkan ke 2.0; mengubahnya di server agar sesuai dengan IIS Manager / App Pool memecahkan masalah bagi saya.

jeffe65
sumber
0

Saya menemukan bahwa mengubah Namespace pada proyek, tanpa refactoring bahwa seluruh solusi adalah masalah saya. Periksa Properti proyek Anda dan lihat apa namespace Anda, pastikan bahwa berbaris, di seluruh papan.

Hadley
sumber
0

Masalahnya bagi saya adalah saya tidak memasukkan global.asax.cs dalam proyek saya. Dan karena saya menyalin file dari .net 4.5 ke 4.0 saya tidak mengomentari baris yang tidak diperlukan di 4.0. Karena itu tidak termasuk visual studio yang disusun itu pula tanpa masalah. Tetapi ketika saya memasukkannya, itu menyoroti garis yang menyebabkan masalah.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
Satbir Kira
sumber
0

Saya benar-benar menghabiskan satu hari mencoba menyelesaikan ini.

Satu-satunya hal yang berhasil adalah menghapus file .sln, membuat yang baru, dan menambahkan proyek kembali satu per satu.

¯ \ _ (ツ) _ / ¯ - Pemrograman - ¯ \ _ (ツ) _ / ¯

Stachu
sumber
0

Untuk kasus saya, perakitan web adalah bagian dari GAC ... jadi setelah membangun, perlu diinstal di GAC dan itu berfungsi.

Wisnu
sumber
0

Saya menemukan pesan kesalahan ini dan akhirnya menemukan bahwa pesan kesalahan itu menyesatkan. Dalam kasus saya tampaknya ada masalah perutean di IIS yang menyebabkan global.asax dari situs lain di server web dibaca sehingga menghasilkan kesalahan.

Di IIS, situs saya terikat ke http: * 80: webservices.local dan berisi aplikasi bernama MyAPI. Saya menerima pesan yang ditakuti saat memanggil aplikasi MyAPI menggunakan alamat ip server web.

Agar berhasil memanggil aplikasi saya, saya harus menambahkan entri file host untuk layanan web.local pada semua mesin yang disebut aplikasi MyAPI. Kemudian semua permintaan saya harus diawali dengan http: //webservices.local/MyAPI/ agar dapat dirutekan dengan benar.

Sheldon
sumber
0

Saya mencoba semuanya di sini dan tidak ada yang berhasil. Proyek saya ada di VS 2013. Sejak itu saya meningkatkan ke VS 2015 dan telah membuat semua aplikasi baru saya di 2015 tetapi memuat, mengkompilasi, membangun dll semua aplikasi lama saya yang dibangun pada 2013 dalam versi itu.

Saya akhirnya hanya memuat solusi pada tahun 2015 dan menyelesaikannya untuk saya.

Blair Holmes
sumber
0

Saya menghabiskan beberapa hari untuk masalah ini. Saya akhirnya menyelesaikannya dengan kombinasi saran berikut dari pos ini.

  1. Ubah target platform ke Semua CPU. Saya tidak memiliki konfigurasi ini saat ini, jadi saya harus pergi ke Manajer Konfigurasi dan menambahkannya. Saya secara khusus mengkompilasi untuk x64. Ini saja tidak menyelesaikan kesalahan.
  2. Ubah jalur output menjadi bin\bukan bin\x64\Debug. Saya sudah mencoba ini beberapa kali sebelum saya mengubah target platform. Itu tidak pernah membuat perbedaan selain mendapatkan kesalahan yang gagal memuat perakitan karena format yang tidak valid.

Agar jelas, saya harus melakukan keduanya sebelum mulai bekerja. Saya sudah mencobanya secara individual beberapa kali tetapi tidak pernah memperbaikinya sampai saya melakukan keduanya.

Jika saya mengubah salah satu dari pengaturan ini kembali ke aslinya, saya mendapatkan kesalahan yang sama lagi, meskipun telah menjalankan Solusi Bersih, dan secara manual menghapus semua yang ada di bindirektori.

Drew Chapin
sumber
0

Dua cara untuk mendapatkan ini:

  • Manajer konfigurasi memperlihatkan build dll sebagai campuran build '64' dan 'any cpu'. Menempatkan mereka semua ke build yang sama akan memperbaikinya.

  • Saat berpindah antar cabang, jalur cepat IIS terkadang tidak diperbarui. Klik kanan 'IIS Express' di bilah tugas> Tampilkan semua aplikasi dan benar-benar jalurnya menuju cabang yang benar.

Carra
sumber