"[Ad alanı] .Global türü yüklenemedi" beni kederlendiriyor


106

.Net 2.0 Asp.net WebForms uygulamamda, aşağıdaki kodu içeren Global.asax'ım var:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

Ancak oluşturduğumda şunu belirten bir hata alıyorum:

'MyNamespace.Global' türü yüklenemedi.

Bunun nedeni, MyNamespace ad alanının (Global.asax.cs dosyasının arkasındaki kodda tanımlanan) derleyici tarafından Global.asax dosyasında görülmemesi (R # intellisence .. 'de gösterilmiyor) olabilir. Bu, kırılması çok zor bir cevizdi ... herhangi bir yardım takdir edilecektir!

Not: Global.asax ve Global.asax.cs aynı klasörde bulunur.

Not2: vs komut isteminden csc ile derlerken tamam derler


Uygulamadaki diğer sayfalar çalışıyor mu? Bazen bu web sunucusu 1.1 çalıştırmak için yapılandırıldığında olur ancak uygulamanın 2.0 için derlenmiş
Öğlen Silk

evet, 'Hedef Çerçeve' 2.0
gkdm

Yanıtlar:


162

Bu soruna neden olan karşılaştığım bir durum, "Yapı Yapılandırması" aracılığıyla bir derleme için platformu belirttiğiniz zamandır.

Derleme platformunuz olarak x86'yı belirtirseniz, visual studio bu proje için çıktı dizininiz olarak otomatik olarak bin / x86 / Debug atayacaktır. Bu, ASP.NET'in derlemelerin Bin klasörüne çıktısını almasını beklediği web uygulamaları dışında, diğer proje türleri için mükemmel bir şekilde geçerlidir.

Benim durumumda bulduğum şey, bazı dll'lerin ve açıklanamaz bir şekilde en önemlisi web uygulamanızın dll'sinin Bin'den eksik olması dışında, her ikisine de (Bin ve Bin / x86 / Debug) çıktı olarak veriliyor olmalarıdır. Klasör.

Bu açıkça bir derleme sorununa ve dolayısıyla "Global tip yüklenemedi" istisnasına neden oldu. Çözeltinin temizlenmesi ve montajların silinmesi, sonraki yapılarda hiçbir fark yaratmadı. Çözümüm, web uygulaması için proje ayarlarındaki çıktı yolunu Bin olarak değiştirmekti (bin / x86 / Debug yerine).


13
Ayrıca: VS'yi kapatıp yeniden açmayı deneyin. Yerleşik hata ayıklama sunucusu kullanıyorsanız, farklı bir web sitesi çalıştırıyor olabilir. Açma / kapatma, localhost bağlantı noktalarını yeniden kaydedecektir.
BradLaney

1
Benim durumumda, proje çıktısını inetpub \ wwwroot \ myproject \ bin içine koymak istedi, ancak iisexpress'i Projem \ bin'e bakacak şekilde yapılandırdım. Sadece çıktı yolunu değiştirmek sorunu çözdü.
shindigo

Benim durumumda, dahil edilmesi gereken bir .dll vardı, ancak bazı nedenlerden dolayı 'yerel kopyala' olarak ayarlanmadı. Bu, bu cevapta belirtilene benzer bir derleme sorununa neden oldu.
HockeyJ

Teşekkürler Stantona. Benim için işe yarayan şey buydu ve tam zamanında eve gittim.
Bill Norman

3
Projenin çıktı yolunu bin klasörüne değiştirmek sorunu çözdü. Günümü kurtardığın için teşekkürler!
Tunahan

18

Projenizin ad alanını değiştirdiniz mi? Bunun zaman zaman Proje Özellikleri iletişim kutusundaki ad alanını değiştirdiğim, ancak Visual Studio namespacemevcut kod dosyalarındaki bildirimi değiştirmediğimde gerçekleştiğini gördüm .


Sence ne yapmalıyım?
gkdm

1
.Cs dosyanızdaki ad alanını kontrol edin ve bunun asax dosyasında belirtilenle aynı olduğundan emin olun.
Şüphem

O zaman emin değilim. Şu an için önerebileceğim tek şey, ILDASM ile derlemenizdeki ad alanlarının içeriğini yeniden oluşturmak ve kontrol etmektir.
PhilPursglove

Teşekkür ederim, bana yardımcı olan çözüm buydu. Çözümümdeki tüm ad alanlarını kontrol etmek için Resharper'ı kullanacağım.
Leonard,

Az önce şu gerçekleşti: Bir MVC 5 projesinde (önemli olduğundan değil) ve proje ad alanını değiştirdim, ancak Global.asax'ı (ve App_Start klasörünü) değiştirmeyi unuttum. Deneyimden bağımsız olarak, bazen aptalca göz ardı etmenler seni yine de etkiliyor.
Jason Snelders

15

Asp .net geliştirme konusunda yeniyim ve benzer bir sorunla karşılaştım.

Sınıfı bir sınıf olarak güncelledim partialve iyi çalıştı.

public partial class Global : System.Web.HttpApplication

1
Global dosyamın neden bu olmadan bittiğinden emin değilim ama bu benim için sorun oldu, teşekkürler!
ginja

9

Visual Studio'yu yeniden başlattım ve hata gitti!


2
aynısı benim için çalıştı. Açık olan TÜM Visual Studio'yu kapattığınızdan emin olun.
alansiqueira27

5

İşte kitaplar için bir tane daha. Aynı bağlantı noktası numarasından birden fazla web uygulaması başlattığınızda bunun meydana geldiği anlaşılıyor.

Temel olarak, çalıştığım birkaç şubem var, bir ana şubem ve bir hazırlık şubem ve bir yayın şubem var. Şubeyi aşama şubesine değiştirdiğimde, aynı bağlantı noktası adresi yapılandırmasını kullandığını fark ettim, bu yüzden bunu değiştirmeyi seçtim. Daha sonra bu rezervasyonun başka bir yapılandırılmış uygulamayla çakıştığına dair başka bir uyarı aldım. IIS Express sunucusu bu konuda hassastır ve her ne sebeple olursa olsun yapılandırmayı engeller.

Etkilenmemiş üçüncü bir bağlantı noktasını seçerek bu sorun ortadan kalktı çünkü daha sonra bağlantı noktasını yeni bir dizin eşlemesiyle eşleştiriyor (dallarım diskte farklı şekilde bulunuyor). Bunu fark ettim çünkü işaret ettiği tür adını değiştirmeye çalıştım.Global.asax ancak tür adı sunucuyu yeniden başlattıktan sonra bile değişmedi, bu yüzden değiştirdiğim kod IIS Express dağıtımına yansıtılmadı.

Bu nedenle, bu konuda çok fazla uykunuzu kaybetmeden önce, şu anda web projesini çalıştırmak için kullanılan IIS bağlantı noktası numarasını değiştirmeyi deneyin.


5
  1. Proje Çözümüne Sağ Tıklayın ve Toplu Oluşturmayı Seçin.
  2. Ardından Proje Adınızı seçin ve Temizle ve Yeniden Oluşturun.

Benim İçin İyi Çalışıyor VS 2015.Şimdi Global etkinliği kullanabilirim. Dosyamda Global.asaxbu Satır var

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

Ve sınıf dosyası yapmak Global.asax.csolduğunu AppCodegibi O bakış klasör

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

Umarım bu yardımcı olacak


3

Global.asax.cs'nin Derleme Eylemini kontrol edin. Derleme olarak ayarlanmalıdır.

Solution Explorer'da Global.asax.cs'ye sağ tıklayın ve Özellikler'e gidin. (Ederken Özellikler bölmesinde, Eylem oluşturmak set değil ayıklama).

VS 2008 her zaman .asax (.cs) dosyalarını varsayılan olarak doğru şekilde eklemiyor gibi görünüyor.


3

Benzer bir hatayla karşılaştım.

<clear/>

alt öğesi (ilk çocuk) olarak etiketleyin

<assemblies>

Web.config dosyamdaki etiketi . IIS'de 'Varsayılan Web Sitesi' altında dağıtılan bir uygulamada yapılandırma devralmayı önlemek amacıyla etiketleri web.config dosyama ekledim.


Bu kesinlikle beni doğru yönde gösterdi. Bitiyor, boş bir yer tutucu olduğu için ana dizine <clear /> koymuştum. Gerçek sorunun, uygulamamın başvurduğu derlemeleri temizlemesi ve uygulama derlemesinin yüklenmesini engellediğine inanıyorum.
Doug Lampe

Bunu ben de deneyimledim - listeyi temizlemek yerine seçili derlemeleri açıkça kaldırmak güzeldi.
Arve Systad

2

Benim durumumda projenin Web Sitesi / Web Uygulaması türü ile ilgiliydi. Yakın zamanda MVC'ye geçtik ve bunu Web Uygulaması olarak değiştirmek zorunda kaldık.

Dolayısıyla çözüm basitti: Çözüm Gezgini'nde web sitenizi seçin ve çözümden kaldırın, ardından çözüme sağ tıklayın ve Ekle -> Mevcut Proje'yi ( Web Sitesi değil ) seçin, web sitesini yeniden derleyin.


2

Eski gönderi ancak web sitesi projesinden web uygulaması projesine dönüştürmeye çalışırken bu hatayı alıyorum.

Bu Bağlantıdaki talimatları izleyin . Halen global.asax hatası alıyorum ama tek yaptığım onu ​​silip görsel stüdyodaki projeye sağ tıklayıp yeni öğe ekle'yi seçerek tekrar eklemekti. Global.asax dosyasını ekleyin ve işe yaradı.


2

Maalesef bunların hiçbiri benim için işe yaramadı. Bulduğum düzeltme, özellikle yerel makinenizde hata ayıklama olmak üzere geliştirmeye daha özeldi. Ayrıca maalesef, sorunu umduğum şekilde gerçekten çözmüyor, ancak zekanızın sonundaysanız, bu sizi tekrar koşturabilir.

TL; DR: Proje özelliklerinde, web sekmesinde, Sunucular altında, Yerel IIS Web Sunucusunu Kullan'ı seçin. Adres,

http://localhost/MyApp" 

zaten doldurulmuştu (IIS7, .NET 4.0'a sahibim). Başlangıçta seçilen, "/" Sanal yoluna sahip "Visual Studio Geliştirme Sunucusunu Kullan" idi.

Beni gerçekten şaşırtan şey, başka hiçbir şeyin işe yaramadığı, SO'da bulabildiğim tüm önerileri uyguladım ve hiçbir şeyin işe yaramayacağı gerçeğidir. Garip olan şey, eski bir .net 2.0 (sanırım) projesinden eklenen mevcut bir dosyaya benzer yeni bir ascx dosyası eklediğimde hata (görünüşe göre, son baktığımdan bu yana birkaç ay geçti) ortaya çıktı. bu, uygulama içinden özel kullanıcı yönetimine izin verir. Bu yeni dosyayı eklemeyi deneyene kadar uzun süre güzel çalışıyordu. Ekledikten ve hatayı gördükten sonra derhal tüm değişiklikleri geri aldım, ancak Global.ascx hatası ortadan kalkmadı, hatta tüm projeyi boşa harcadı ve kaynak kontrolünden en yenisini yeniden elde ettim.


2

Çözümümü VS2003'ten VS2010'a dönüştürdüm ve web uygulaması projesini dönüştürmede sorun yaşadım.

Aynı sorunu yaşadım ve yanıtların hiçbiri benim için işe yaramadı.

Benim için işe yarayan şuydu:

  • Çözüme sağ tıklayın ve Configuration Manager'ı seçin
  • "Etkin çözüm yapılandırması" açılır listesindeki yapılandırmaların her birine bakıldı.
  • "Oluştur" onay kutusunu işaretleyerek web uygulamasını derlemeye dahil etti.

Görünüşe göre dönüştürme sırasında yaşadığım sorunlar web uygulaması projesini bir nedenle derlemeden kaldırmıştı.

Umarım bu cevap, aynı sorunu yaşayan herkese yardımcı olur ...


1

Bir projeyi yeniden oluşturur veya değiştirirseniz ve eski bir projeden dosyaların üzerine geçerseniz, globalinizin Devral bloğunu kontrol ettiğinizden emin olun. Benim durumumda, eski proje / çözüm intranet olarak adlandırılmıştı ve bunu Intranet olarak yeniden oluşturmuştum, ancak dosyalar üzerinde hareket ettiğimde küçük harften (duh) hoşlanmadı. Dosyaların adlarına genel bir göz atın.


1

Derlemenin GUID'ini değiştirin. Bu, bulduğum birçok sorunu çözdü.


GUID'yi nasıl değiştirirsiniz?
Drew Chapin

1

Bir projede bu hatayı aldığımda benzer sorunlar yaşadım.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Biraz zaman harcadıktan sonra, bir Sınıfta olası hataları olan bir işlevden şüpheleniyorum .. Daha sonra, sorunumun belirli bir işleve çözüleceğini söyleyerek.

Visual Studio'nun hata ayıklama sırasında bana neden bu belirli hatayı vermediğini bilmiyorum. Ancak bu hata, sınıf dosyasındaki bazı hatalardan kaynaklanabilir.


1

Bu benim için çalışıyor: İlk şey: Görünüşe göre visual studio'ya ne söylerseniz söyleyin, ide her zaman dosyaya bakar: bin (benim durumumda web uygulaması için ve tabii ki dışında) Yani, visual studio'ya dediğimde bile dosya yüklemek için belirli bir yol, ide yanlış yolu aramaya devam eder. Bu yüzden: Build / Configuration Manager'da çıktı türünü şu şekilde değiştiriyorum: Release (daha önce çözümü manuel olarak temizledim), böylece .dll dosyası oluşturulduğunda manuel olarak proje / çözüm altındaki "bin" klasörüne taşındım Klasör. Umarım bu yardımcı olur !!


1

Benim durumumda, hedef işlemcimden (x64) dolayı bunu x86 olarak değiştirdim, projeyi temizledim, VS'yi (2012) yeniden başlattım ve projeyi yeniden oluşturdum; sonra gitti.


1

En son bu sorunla karşılaştığımda burada bahsedilen her şeyi denedim ama boşuna. Saçımı yırttıktan sonra silmeyi denemeye karar verdim. tüm kod tabanımı (evet, oldukça çaresiz!) Ve ardından kod depomdan her şeyi yeniden indirdim. Bunu yaptıktan sonra her şey bir kez daha iyi çalıştı.

Aşırı bir çözüm gibi görünüyor, ancak bu başlıkta daha önce bahsedilmediği için onu buraya dahil edeceğimi düşündüm.

(Bu sorunla diğer karşılaştığımda, Global.asax'ın ana makineye kaydedilmesi gereken bir bileşenden miras aldığına dikkat edin. Bu eksikti, dolayısıyla aynı sorunu yaşadım).

TL; DR; Bu konudaki tüm cevaplar sizin için işe yaramazsa, kod tabanınızın tamamını silmeyi ve ardından yeniden indirmeyi deneyin!


1

Bu sorunla birkaç kez karşılaştım ve her durumda bir bilgisayarı yeniden kuruyordum veya yeni bir bilgisayara geçiyordum. İlk adımım (makineyi güncellemenin ve Visual Studio'yu kurmanın yanı sıra) projelerimi Git'ten aşağıya çekip test etmek.

Her seferinde bu hataya çarptım çünkü yerel koduma onu derlemeden önce erişmeye çalıştım. Gördüğünüz gibi, bin / derleme klasörlerimi yok saymak için Git ve Subversion kurulumuna sahibim, bu yüzden depomdan bir çekmeden sonra Nuget'ten gerekli paketleri çeken bir yapı çalıştırmayı unuttum (Git / SVN'ye sahip olduğum için bunları da yok sayıyorum) ve DLL'lerin uygulamamı gerçekten çalıştırması gerekiyordu.

Bunun çoğu insanın sorununu çözeceğinden şüpheliyim, ancak bunu olası çözümler listesinde görmedim, bu yüzden ekleyeceğimi düşündüm.


1

Benim durumumda, Global.asax'ı denemek için bir WCF projesine ekledim, ancak kaldırmaya karar verdim. Çözüm Gezgini'nden kaldırdım, ancak hala klasörde olduğu için, boru hattı hala onu buluyor ve bu hataya neden oluyordu.

Global.ASAX ve GLobal.asax.cs dosyalarını dosya sisteminden kaldırdım ve bu hatayı çözdü.


BU, benim için çözdü, teşekkürler, ancak gelecekte başkaları için de benim durumumda Global.asax'ı projeme hiç eklemediğimi de eklemek isterim. Ancak burada belirtildiği gibi, global.asax ve global.asax.cs dosyaları dosya sistemimdeydi. Onları sildiğimde hata ortadan kalktı.
stackonfire

1

Yaklaşık 20 yıldır geliştirme oyununda yer alan bu kestane, beni birçok projede rahatsız etmeye devam etti.

Bu nedenle, bugün aynı sorunu başka bir projeye karşı tekrar yaşarken, daha fazla araştırmaya karar verdim ve bunun Bin klasörü konumu ile ilgili olduğuna inanıyorum ... veya daha spesifik olarak, bin klasörünün çıktı yolu.

Basit bir hizmet tabanlı web uygulaması çalıştırmak için / IIS üzerinden hata ayıklama yapılandırılan için Benim için, bu çıktısı yolunu değiştiriyordu ayıklama \ bin için bin \ çözüldü

Proje> Özellikler> Oluştur> Çıktı yolu

Cidden bunun yardımcı olacağını umuyor.


0

Aynı lanet olası mesele beni şaşırttı. Kaldırmaya çalıştım ve veglobal.asax (eklemeden önce VS2010'u kapattım). Projeyi / çözümü temizledim, web uygulaması yapılandırmasında herhangi bir değişiklik olup olmadığını ve burada diğer kişiler için SO iş parçacıklarında çalışan diğer şeyleri kontrol ettim. Sonunda çözümü temizledim, bin / obj klasörlerini sildim ve çalışan VS2010 geliştirme sunucularını durdurdum, ardından tüm değişiklikleri geri aldım ve uygulamanın tekrar çalıştığını gördüm. Aynı şeyleri yeniden yaptım ve şimdi iyi çalışıyor.

Yine oldu ve bu sefer bu çözüm benim için çalıştı.


0

Çözümünüzün özellikleri altında konfigürasyon yöneticisine gidin. O zaman tüm projelerin ve inşa edildiğinden emin olun, bu bir sorun olmayacak.


0

Projeye dahil olmayan dosyaları diskten silmek (çoğaltmak) zorunda kaldım. Görünüşe göre, kopyalar başarısız bir yeniden adlandırma işleminden kaynaklanmış. Dosya adları farklıydı, ancak aynı koddu.

Tüm oof. * Dosyalarını sildikten sonra tarayabildim.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

Benim durumumda, IISExpress, çözmek için IIS ile aynı bağlantı noktasına işaret ediyordu.

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

ve bağlantı noktasını arayın, <site>...</site>kaldırmanız veya yorum yapmanız gereken etiketi bulacaksınız


0

Bu sorunu yalnızca prod sunucusuna dağıtırken yaşadım. Diğer ortamlarımda işe yarıyor ... Bin klasöründeki şeyleri sildim, sonra yeniden yayınladım ve bundan sonra çalışıyor.


0

Visual Studio kullanıyorsanız, uygulamayı muhtemelen Yayın Modunda yürütmeye çalışıyorsunuz, Hata Ayıklama Modu'na değiştirmeyi deneyin.


0

Çözümü yeniden oluşturmaya ve ASP.NET Geçici dosyalarını temizlemeye çalıştım.
Ancak IISRESET'i çalıştırdıktan sonra hata kayboldu.

Güncelleme : 1 ay sonra yine aynı sorunu yaşadım. MyWebsite.DLL'nin bin klasöründe bulunduğunu, ancak Temporary ASP.NET Files'da (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files) bulunmadığını fark ettim. Bu konuda önerilen birkaç şeyi denedim ve Global.asax sorularında "Ayrıştırıcı Hata Mesajı: Tür yüklenemedi" (aslında kendi cevabımı unuttum), ancak hata yalnızca IISRESET'ten sonra kayboldu


0

Benim durumum VS 2017'de, hafif çözüm yükü bu soruna neden oluyordu. Devre dışı bıraktım ve VS'yi yeniden başlattım, ardından çözümümü yeniden oluşturdum ve sorun gitti.


2
"Hafif" çözüm nedir?
Fandango68

0

Sadece iki sentimi eklemek istedim. Aynı hatayı alıyordum ve tüm önerileri boşuna denedim. Durumum muhtemelen farklı mı?

Otomatik olarak oluşturulan bir "AssemblyInfo.cs" dosyasında bazı gereksiz boşluklar vardı ve bu da web uygulamasını başlatmamı engelliyordu (hata ayıklama yoluyla). İşte dosya neye benziyordu:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

AssemblyCompany ve AssemblyCopyright'taki boşlukları öldürdükten sonra, sonunda projeyi inşa edip başlatabildim.

Aşağıdaki ortamda gözlemlenir: --Visual Studio 2017 Community version 15.3.0 --Win 7 x64 Enterprise --Yeni Proje> Visual C #> Web> ASP.NET Web Uygulaması> Web Formları

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.