Global.asax'ta “Ayrıştırıcı Hata Mesajı: Tür yüklenemedi”


203

Bir MVC3 projesi üzerinde çalışıyorum ve aşağıdaki hatayı alıyorum:

Ayrıştırıcı Hata İletisi: 'GodsCreationTaxidermy.MvcApplication' türü yüklenemedi.

Kaynak Hatası:

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

Aldığım hata GodsCreationTaxidermy.Core.MvcApplication yükleyemiyor ama bu ekranda çekim Çekirdek kısmı hatada görüntülenmiyor:

Hata Sayfası Ekran Görüntüsü

Bu hatanın herhangi bir fikri veya çözümü olan var mı?


8
Uygulamanızda gerçekten GodsCreationTaxidermy.Core.MvcApplication sınıfınız var mı? Değilse lütfen aynı şeyi oluşturun ve projeyi derleyin. Kesinlikle işe yarayacak.
Shailesh

4
Evet GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder

Kullanıldığı anlaşılan Global.asax dosyası (ekran görüntüsüne göre) gösterdiğiniz dosyadan farklı görünüyor.
Darin Dimitrov

Inherits dizesinin uygulamanızdaki sınıfın yoluyla aynı olup olmadığını kontrol edin (ad alanı + yol adı), yani her ikisi de GodsCreationTaxidermy.Core.MvcApplication
linkerro

Darin, bu ne yaparsam yapayım her zaman Çekirdek kısmını dışarıda bırakır
PsychoCoder

Yanıtlar:


175

Yerel web sunucunuz üzerinde çalıştığınızdan farklı bir kod çalıştırıyor. Hata ayıklamayı durdurduğunuzdan emin olun, yerel web sunucunuzu durdurun, Peter'ın önerdiği şekilde temizleyin ve yeniden oluşturun, global.asax ve global.asax.cs dosyalarınızı tekrar kontrol edin ve tekrar deneyin.

Bu işe yaramazsa ve yerel IIS kullanıyorsanız, siteyi IIS Yöneticisi'nde kaldırmayı ve el ile yeniden oluşturmayı deneyin.


4
Gerçekten çok garip bir hata. Sunucuda IIS'ye dağıttım ve bunu aldım. Temizlenmiş ve derlenmiş benim için de çalıştı.
Piotr Kula

2
Clean / Rebuild + Sanal Dizini yeniden oluşturdu ve sonra çalıştı.
fantastik78

4
Aynı projeyi iki Visual Studio örneğinde açtığımda sorun yaşadım. Bu nedenle çalışan iki IIS Express örneğim vardı. Birini kapatmak zorunda kaldım ve sonra çözüldü.
lvmeijer

4
Ayrıca, projenizdeki bin / obj klasörlerini silmeyi de deneyebilirsiniz.
arni

1
Bu talimatları izledim ve birkaç ek temizleme / yeniden oluşturma işlemine girdim, .asax dosyasındaki boşluğu değiştirdim, monitörlerimi yeniden biçimlendirdim ve Pan boruları eşliğinde şenlikli bir jig yaptım ve bu hile gibi görünüyordu.
MrBoJangles

208

Proje çıkış yolu (proje özellikleri / Yapı) olarak ayarlanmış olduğundan emin olun binve değil bin\Release yabin\Debug

Herhangi bir nedenle IIS (VS geliştirme Sunucusu veya Yerel IIS) kütüphanelere her zaman bindizinden erişir (ve alt dizinleri aramaz)


27
Vadesi geldiğinde kredi verin. Sorunum düzeltildi, uygulamam bin \ Debug kullanacak şekilde ayarlandı, bin olarak değiştirilerek çözüldü. Çok teşekkürler.
Joey Bob

ASP.NET projelerinin varsayılan çıkış yolu kutusu / $ (Yapılandırma) / kullanmadığını öğrenmek ilginçti. Cevabınız için çok teşekkürler!
Jaanus Varus

2
@ JamesPusateri: Dikkatli ol. Her başlattığınızda, / bin içindeki içeriği kullanır. Muhtemelen değiştirdikten sonra yaptığınız bu yapının sonucu.
Vincent de Lagabbe

1
Vay, 2018'de IIS hala bu şekilde çalışıyor. Kötü, Microsoft için çok kötü. Teşekkürler!
Rodrigo

1
neredeyse 7 yıldır hiçbir şey değişmiyor, tavsiye hala yardımcı oluyor
Yuriy Vikulov

33

Global.asax dosyanızı değiştirmeyi deneyin (basit bir yere boşluk ekleyin) ve yeniden çalıştırın. bu yerleşik web sunucusunu global.asax dosyasını yenilemeye ve yeniden derlemeye zorlar.

Ayrıca bir temizlik yapın ve yeniden oluşturun - sorunu çözmeli


4
Değiştirmek global.asax benim için hiçbir şey yapmadı, ama temiz ve yeniden inşa sorunu düzeltti :)
NightShovel

Gücüm bittiğinde bu sorunu yaşadım. Temizlik ve yeniden inşa yardımcı oldu. Teşekkürler!
Gorgi Rankovski

Temizlik başarısız oldu. Yapı hatalı oldu. Yapım yolumla ilgili hiçbir sorun yaşamadım. Ancak bu hile yaptı. Teşekkürler!
egandalf

Cevabınız için teşekkür ederiz Bay Munnings
dada

30

Bu bazen global.asax, oluşturulduktan sonra ad alanı bilgilerini (proje veya sınıf düzeyi) değiştirirseniz olur .

Üzerine sağ tıklayın Global.asaxDosyaya ve "Birlikte Aç" ı ve ardından "Kodlama ile XML (Metin) Düzenleyicisi" ni seçin (diğer düzenleyiciler de işe yarayabilir, ancak kullandığım budur).

Ardından XML yönergesindeki "Devralmalar" bölümünü düzenleyin

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

böylece Uygulama sınıfınızın gerçek tam adıyla eşleşir. Ve bu kadar.

Başka bir seçenek de tüm kodunuzu Global.asax.cs dosyasından kopyalayıp başka bir Global.asax dosyası silerek oluşturup (ve kodu Global.asax.cs dosyasına geri kopyalamak).


Bu da benim için çalıştı. Çözümdeki tüm projeler için montajın ad alanını değiştirdim. Bu yüzden Global.asaxdosyayı bu cevapta belirtildiği gibi düzenlemek ve Proje Yapılandırma ayarlarında belirtilenlerle eşleştirmek zorunda kaldı.
Shiva

21

Görsel stüdyosu kapatıp yeniden açtım ve işe yaradı.


4
TÜM görsel stüdyosunu kapat
Jboy Flaga

11
Öncelikle hepimiz arabadan çıkmayı, tüm kapıları kapatmayı ve sonra tekrar içeri girmeyi denemeliyiz.
pajics

Hayır, aynı anda TÜM araçlarınızdaki kapıları kapatmalısınız.
BlackICE

18

BİNA -> KONFİGÜRASYON MÜDÜRÜ'ne gitmek zorunda kaldım ve - ahem - gerçekten inşa edildiğinden emin olmak için projemin yanındaki kutuyu işaretlemeliydim.


2
Aşağı oyu anlamıyorum. Bu potansiyel olarak bir çözüm olabilirdi. Bu aslında çoğu düşündüğünden daha alakalı ... İşaretlenmezse, her zaman en belirgin yer değildir. Özellikle birkaç konfigürasyon olduğunda.
Anthony Mason

Cevabınızı ve muhakemenizi seviyorum!
UKM

1
Bu da benim sorunumdu ve projelerin konfigürasyondan nasıl kaldırıldığına dair hiçbir fikrim yok.
Seth

5

Bugün bu sorunu yaşadım ve sebebini bulmak biraz zaman aldı.

Temel olarak, ana VS2015 projem, .Net Framework'ün daha yüksek bir sürümü kullanılarak oluşturulmuş bir alt projeyi içeriyordu.

Tuhaf bir şekilde, bu sorunla karşılaştığınızda VS2015, çözümün iyi oluşturulduğunu memnuniyetle bildirir, ancak web sitesini çalıştırmaya çalıştığınızda, sadece yanıltıcı hatayı verir, Global.asax.csdosyanızın yanlış olduğunu gösterir.

Bu nedenle, bu hatayı görürseniz ve Temizleme / Yeniden Oluşturma yardımcı olmazsa, Projenizin Referencesağacını açın ve ünlem işaretlerini kontrol edin.

resim açıklamasını buraya girin

Ayrıca, Outputpencerenizde aşağıdaki gibi mesajlar olup olmadığını kontrol edin :

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

Çözüm, elbette, ana projenize sağ tıklamak, üst sekmeyi, "Uygulama" yı seçmek ve Hedef Çerçeve sürümünü alt projenizle eşleşen daha yüksek bir sürüme değiştirmek.

Visual Studio 2015'in bu sorunu sessizce içeren Çözümleri tam olarak oluşturmanıza ve çalıştırmanıza izin vermesi can sıkıcı bir durumdur. Sorun istiyor ..!


3

"YAPI -> YAPILANDIRMA MÜDÜRÜ ve - ahem - gerçekten inşa edildiğinden emin olmak için projemin yanındaki kutuyu işaretleyin." Bu ve Windows Gezgini'ndeki proje klasörüne gitmek, seçeneklere basmak ve "Salt okunur" onay kutusunun işaretini kaldırmak yardımcı oldu.


sadece benim için çalıştı. Proje seçeneği etkin değil neden bilmiyorum ama bu geçici çözüm ihtiyacım oldu, teşekkürler.
willyMon

2

Sitenizin özelliklerini IIS'de de kontrol edebilirsiniz. (IIS'de siteyi sağ tıklatın ve Özellikler'i seçin.) Fiziksel Yol ayarının, başka bir uygulama için değil, uygulamanız için doğru yolu gösterdiğinden emin olun. (Bu benim için bu hatayı düzeltti.)


2

Ben sadece bir MVC5 uygulamada bu karşılaştım ve hiçbir şey benim için çalışıyordu. Bu, projenin eski bir sürümüne SVN dönüşü yapmaya çalıştıktan hemen sonra oldu.

Global.asax.cs dosyasını silmek zorunda kaldım ve ardından Project -> Yeni Öğe Ekle -> Global.asax'ı sağ tıklatarak yeni bir tane ekledim ve THAT bunu düzeltti.

Sadece birine yardım edebileceğini düşündüm.


Bu sizin için düzeltirse, büyük olasılıkla varolan global.asax.csdosyanın "Eylem oluştur" özelliği hakkında bir şeyler karışmış olabilir . "Derle" olarak ayarlanmalıdır. global.asaxDosyanın kendisinin derleme işlemi "İçerik" olarak ayarlanmalıdır.
Steven Liekens

@İAteABug_And_iLiked_it ne yaptığını tam olarak yaptım ve sorun çözüldü!
zinczinc

2

Bu yazıdan en az 4 öneri denediğimi bildirmeliyim. Hiçbiri işe yaramadı. Yine de geri çekerek geri kazandığımı bildirmekten mutluluk duyuyorum. Yalnızca günlük dosyasındaki son kod değişikliklerimi güncellemek zorunda kaldım. 10 dakikadan az sürdü. Bu yazıyı okumak ve diğer önerileri denemek 3 kez geçirdi. Afedersiniz.

Çok garip bir hataydı. Bu gremlin ile karşılaşan herkese iyi şanslar.


2

Aynı projeyi çalıştıran Visual Studio 2 örneği olduğunda aynı sorun var. Bu yüzden hem Visual Studio'yu kapattım hem de sadece bir örneği açtım ve şimdi iyi çalışıyor!


2

Eski bir 'klasör tabanlı' ASP.NET web projesi (ki ben nefret) üzerinde çalışıyordu - ve bu benim düzeltme olarak bulundu:

Bir App_Codeklasör oluşturun (daha önce bir klasör yoksa)

Global.asax.vbDosyayı App_Codeklasöre taşıyın

Global.asax'taki işaretleme herhangi bir ad alanını dışarıda bırakabilir (en azından bu proje stili için afaik):

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

... "Uygulamam", Global.asax.vb dosyasında tanımlanan sınıfın adıdır


1

Bölme klasörünü boşaltın. Tüm bağımlı sınıf kitaplıklarını oluşturun ve bunları ana projeye yönlendirin ve tam çözümü oluşturun.

Kaynak


1

Ben de aynı problemle karşılaştım. Her cevabı takip etmesine rağmen işe yaramadı. Sonra "Inherits = namespace.class ", "Inherits = tam nitelikli bir araya getirme adı " olarak değiştirildi, yani "Inherits = namespace.class, assemblylyname, Version =, Culture =, PublicKeyToken = " Umarım yardımcı olur.


1

Aynı çözümü kullanarak bir Web ve WebApi çalıştırıyorsanız, VS çözümünüzü "Birden Çok Başlangıç ​​Projesine" ayarlamayı yanlışlıkla unutursanız da bu durum ortaya çıkabilir.

Çözüm Gezgini'nde Çözüm'e sağ tıklayıp 'Özellikler'i seçerek bunu kontrol edebilirsiniz.Ardından' Başlangıç ​​Projeleri'ni arayın.


Benimki buna benziyordu: Çözümde yanlış API projesini çalıştırıyordum. Aslında çalıştığımı düşündüğüm API'de bir derleyici hatası vardı, ancak temiz bir çözümden sonra bile çözümü çalıştırdığımda VS bunu almamıştı.
John

1

Sil .vsDizini çözüm kökünden . Temiz. Yeniden oluşturun.

Bu sorun beni bir kerede çılgınlığa sürüklüyor ve kaçınılmaz olarak burada cevaplar arasında çağrı yapıyor. Bu istisnayı üretebilecek birden fazla neden olduğundan şüpheleniyorum, bu bir kez benim için çalışıyor.


Binlerce öneri denemeye birkaç saat var ve bu benim için yaptı. Uygulamam hem hata ayıklama hem de sürüm yapılandırmalarında Visual Studio'da iyi çalışıyordu, ancak IIS'de yayınlandıktan sonra hatayı alıyordum. .Vs klasörünü silmek ve yeniden dağıtmak sorunu çözdü.
Philip Stratford

1

Evet, tüm cevapları okudum. Ancak, ben iseniz ve saçınızdan kalanların tümünü çekiyorsanız, \ bin klasörünü kontrol etmeyi deneyin. Çoğu proj dosya XML öğesi altında gruplandırılmış birkaç yapılandırma olabilir gibi PropertyGroup, ben OutputPath'\ Debug' kısmını kaldırmak ve yeniden oluşturmak için 'bin \ Debug' değerini değiştirdim . Bu, dosyaları \ bin klasörüne yerleştirerek Express IIS'nin yapıyı bulmasını ve yüklemesini sağlar. Yerel bir hata ayıklama dağıtımının hedef ortamı bulup yükleyebilmesi için bu farklı yapıları yönetmenin doğru yolunun ne olduğunu merak ediyorum.


Bu işe yarayan tek şeydi. Birçok gömülü beden ... diğer meslekleri ciddiye almamı sağlayan şey böyle.
doveryai

0

Bu sorun, klasörün doğru izninin yanı sıra IIS'den izin vererek çözüldü.

Yerel ortamımda test ederken herkese izin verildi. Ancak yayınlama modunda bence sadece ASP.Net kullanıcısına izin veriyoruz.


0

Ben de aynı hatayı aldım ... düzgün geliştirdiğiniz Uygulamanın adını kontrol yani. ad alanı ve derleme adı ayrıldı ve ayrıca uygulama için oluşturulan klasörün adını fiziksel olarak değiştirmeyi deneyin, bunların tümü global.asax dosyasında bulunan yukarıdaki ad alanındaki adla aynı olmalıdır.


0

Aynı hatayı aldım ... Sanal Dizininizin IIS Yapılandırmasını kontrol edin ve Özellikler - ASP.NET - ASP.NET Sürümü'nün Proje Özellikleri - Uygulama - Hedef Çerçevesi ile aynı olduğundan emin olun. (Bu benim için bu hatayı düzeltti.)


0

Uygulamam VS'nin eski bir sürümünde oluşturuldu ve bir bin klasörü yoktu. Daha yeni bir sürüme yükseltmiştim ve dağıtmak için bir kabus gördüm. Sonunda bu hatayı Proje> Özellikler> Uygulama'ya kadar takip ettim. Hedef Çerçeve 2.0 olarak belirlendi; IIS Yöneticisi / Uygulama Havuzu'nda eşleşecek şekilde sunucuda değiştirilmesi sorunu benim için çözdü.


0

Tüm çözüm boyunca yeniden düzenleme yapmadan projedeki Ad Alanı'nı değiştirmenin benim sorunum olduğunu buldum. Projenizin Özelliklerini kontrol edin ve ad alanınızın ne olduğunu görün, tahta boyunca aynı çizgide olduğundan emin olun.


0

Benim için sorun, global.asax.cs dosyasını projeme dahil etmem. Ve .net 4.5'ten 4.0'a dosya kopyaladığım için 4.0'da gerekli olmayan satırları yorumlamadım. Visual studio dahil olmadığı için zaten sorunsuz bir şekilde derledi. Ama dahil ettiğimde, sorunlara neden olan çizgileri vurguladı.

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);
        }
    }
}

0

Kelimenin tam anlamıyla bunu çözmeye çalışırken bir gün geçirdim.

İşe yarayan tek şey .sln dosyasını silmek, yeni bir dosya oluşturmak ve projeleri tek tek eklemekti.

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


0

Benim durumum için, web meclisi GAC'nin bir parçasıydı ... bu yüzden derlemeden sonra GAC'ye yüklenmesi gerekiyor ve işe yaradı.


0

Bu hata iletisiyle karşılaştım ve sonunda hata iletisinin yanıltıcı olduğunu keşfettim. Benim durumumda, IIS'de web sunucusundaki başka bir siteden global.asax'ın okunmasına ve böylece hatayı oluşturmasına neden olan bir yönlendirme sorunu var gibi görünüyor.

IIS'de sitem http: * 80: webservices.local dosyasına bağlıydı ve MyAPI adlı bir uygulama içeriyordu. Web sunucusunun ip adresini kullanarak MyAPI uygulamasını çağırırken korkunç mesajı aldım.

Uygulamamı başarılı bir şekilde aramak için, MyAPI uygulaması adı verilen tüm makinelerde webservices.local için bir ana bilgisayar dosya girişi eklemek zorunda kaldım. Daha sonra, doğru şekilde yönlendirmek için tüm isteklerinize http: //webservices.local/MyAPI/ öneki getirilmeliydi .


0

Burada kesinlikle her şeyi denedim ve hiçbir şey işe yaramadı. Projem VS 2013'teydi. O zamandan beri VS 2015'e geçtim ve 2015'te tüm yeni uygulamalarımı oluşturuyorum, ancak 2013'te bu sürümde oluşturulan tüm eski uygulamalarımı yükler, derler, oluşturur vb.

2015 yılında çözümü yükledim ve çözdüm benim için.


0

Bu konuda birkaç gün geçirdim. Sonunda bu yazı önerilerin aşağıdaki kombinasyonu ile çözüldü.

  1. Platform hedefini Herhangi Bir CPU olarak değiştirin. Şu anda bu yapılandırmaya sahip değildim, bu yüzden Configuration Manager'a gidip eklemem gerekiyordu. Özellikle x64 için derliyordum. Bu tek başına hatayı çözmedi.
  2. Çıktı yolunu bin\yerine olarak değiştirin bin\x64\Debug. Platform hedefini değiştirmeden önce bunu birkaç kez denemiştim. Geçersiz bir biçim nedeniyle derleme yüklenemedi hatası almak dışında hiçbir fark yaratmadı.

Açık olmak gerekirse, çalışmaya başlamadan önce her ikisini de yapmak zorundaydım. Onları birden çok kez denedim ama ikisini de yapana kadar hiçbir zaman düzeltmedi.

Bu ayarlardan birini orijinaline geri döndürürsem, Clean Solution'ı çalıştırıp bindizindeki her şeyi el ile silmeme rağmen aynı hatayı tekrar alıyorum .


0

Bunu almanın iki yolu:

  • Yapılandırma yöneticisi dll yapılarını '64' ve 'herhangi bir işlemci' yapılarının bir karışımı olarak gösterir. Hepsini aynı yapıya koymak sorunu çözer.

  • Dallar arasında geçiş yaparken, IIS ekspres yolu bazen güncellenmez. Görev çubuğunda 'IIS Express'i sağ tıklayın> Tüm uygulamaları göster ve yolun doğru dalda olduğunu doğrulayın.

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.