Hata: allowDefinition = 'MachineToApplication' uygulama seviyesinin ötesinde


193

ASP.Net'teki çevrimiçi projeyi indirdim. Uygulamayı çalıştırırken bir hata alıyorum

Uygulama seviyesinin ötesinde allowDefinition = 'MachineToApplication' olarak kaydedilmiş bir bölümün kullanılması bir hatadır. Bu hata, sanal bir dizinin IIS'de uygulama olarak yapılandırılmamasından kaynaklanabilir.

Bu çalışmayı sağlamak için web.config veya başka yerlerde hangi değişiklikleri yapmalıyım?


53
Web'de bulunan cevapların hiçbiri işe yaramadı. Sorunum, tüm gizli dosyaları / klasörleri göstererek ve objklasörü silerek çözüldü .
Muffin Adam

6
Bu sorun VS2012'de hala kendini gösteriyor. Microsoft ile bir hata raporu açtım. Sorunu yaşayan herkes lütfen hata raporunu onaylayın connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.

4
obj klasörünü silmek bu sorunu benim için de çözdü. teşekkürler @Nick! (canlanma için özür dilerim)
Jordan Wayne Crabb


benim durumumda, bir alt klasördeki ekstra web.config bu soruna neden olur. Bu ekstra web.config dosyasını kaldırdığımda hata gitti
Dio Phung

Yanıtlar:


96

Ben sadece bu "zevk" ile karşılaştım. Sürüm modunda bir web uygulaması yayınladıktan hemen sonra kendini gösteriyor.

Bulduğum sorunu tutarlı bir şekilde ele almanın tek yolu bu kontrol listesini takip etmektir:

  1. Çözümünüz Yayınlama modunda yapılandırılırken çözümü temizleyin.
  2. Çözümünüz Hata Ayıklama modunda yapılandırılırken çözümü temizleyin.
  3. Çözümünüz Hata Ayıklama modunda yapılandırılırken derleyin.

18
Sadece benim için çalışan cevap. Bundan sonra beni bekleyen birçok hata vardı ama ilgisizdi. Ben ayarlayarak burada var MvcBuildViewsetmek true.
Benjamin

+1 BTW: Bunun benim için çalışmasının nedeni, en son yaptığım yapının Debug olmasıydı . Çözümü açtım, bir hata düzeltmesi yaptım ve R Sürüm modunda oluşturmaya çalıştım . İçinde temizlenmesi Release işe yaramadı ama temizlik ayıklama yaptı. (Muhtemelen 2 bir combo ne ihtiyaç vardı, yani dlls, Debug veya Release herhangi bir eski refs temizleyin .
Scotty.NET

4
Bir temizlik yaptım , sonra * proje özellikleri -> Web -> Sanal Dizin Oluştur'a gittim ve sorun çözüldü
gldraphael

Benim için tek gereken hata ayıklama modundayken temizlemek ve yeniden inşa etmek. Serbest bırakma ve hata ayıklama arasında geçiş yapmanıza gerek yoktur. Fakat evet, TEMİZ çok önemlidir. Meselenin kalbi bu.
markaaronky

1
Daha önce hiç görmediğim durumumda temiz değil. Bu eski bir meslektaşım miras çok eski bir VB.NET uygulamasıdır.
tnk479

82

Sadece bu yazıyla karşılaşın ve bu benim başıma geldi.
Sadece Cleanproje ve hata ortadan kalkar. (VS2010 hatası olmalıdır)


Visual Studio'da bir Hata olarak alırsanız bu çözüm.
gideon

22
Bazen clean objklasörü temizlemez . Bunun bazen silinmesi gerekebilir.
Mart'ta 13:55

1
Ne Temiz ne de objeleri silmek işe yaramadı. Johnny Reilly'nin çözümü benim için çalıştı.
Benjamin

Bundan kurtulmak için hem hata ayıklama hem de serbest bırakma modlarında temiz çalışmam gerekiyordu. Sadece hata ayıklama için çalıştırmak sorunu çözmedi.
Juha Palomäki

Aynı sorun VS2013SP1'de de mevcuttur. Basit bir temizlik tekrar konuşlandırmamı sağlıyor.
Brian Knoblauch

25

Web sitemin ikinci bir sürümünü oluştururken bu sorunu yaşadım. İlk kez inşa ettiğimde olmadı.

Ben sadece bin ve obj klasörlerini sildim, bir Temiz Çözüm çalıştırın ve bu sefer herhangi bir sorun olmadan tekrar inşa ettim.


2
Web için VS Express 2012'de benim için çalışan tek çözüm budur. Ayrıca, yalnızca bir çözüm yapılandırması oluşturduktan sonra bu hatayı almaya başladım ve MvcBuildViews .csproj kaynağındaki PropertyGroup değerine true olarak ayarlandı.
Jeremy Cook

20

Yok. Web sitesini IIS içinde bir web uygulaması olarak yerleştirdiğiniz dizini ayarlamanız gerekir .


1
Teknik olarak bu değişiklik "bu işi yapmak için başka bir yerde" olmasına rağmen;)
Zhaph - Ben Duguid

2
ve bu web uygulamanızda bir hata olarak alırsanız çözüm! = P
gideon

Zaten bir uygulama olarak kuruluyordum. Benim durumumda Johnny Reilly'nin çözümü işe yaradı.
Benjamin

Sadece şablon Webforms uygulamasını çalıştıracak çalışıyorum. Localhost üzerinde iyi ama LAN bir sunucuda değil. Bu çözüm benim için çalıştı: VS2015 CE, Windows Server 2008 LAN'ımda. Bu MS sayfasını IIS'de ne yapacağımı açıklamak için kullandım: support.microsoft.com/en-gb/kb/917413 . Şablon kodunda değişiklik yok.
Tim

16

Bu hata, bir projeyi web sitesi olarak açmaya çalıştığınızda oluşur. Bir web sitesi veya proje oluşturup oluşturmadığınızı belirlemenin en kolay yolu çözüm klasörünüzü (yani kodunuzu kaydettiğiniz yer) kontrol etmek ve kök dizinde * .sln dosyanızın olup olmadığını görmektir. bir proje yarattık.

Sadece eklemek için, Visual Studio menülerinden "Dosya", "Web Sitesini Aç" ı seçerek bir süre önce oluşturduğum bir projeyi açmaya çalıştığımda bu hatayla karşılaştım, oysa "Dosya", "Proje Aç" ı seçmeliydim yerine. Farkettim an facepalmed :)


bu da benim
sorunumdu

13

Visual Studio 2013'te bir süre bununla mücadele ettim ve istisnaların "sanal dizin IIS'de bir uygulama olarak yapılandırılmıyor" dediklerini takip etmek çok kolay.

Benim durumumda WebServiceiçine IIS websiteekmiştim

  1. Web sitesini IIS yöneticisinde açtım
  2. WCF klasörünü sağ tıklayın
  3. tıklanan Convert to Application
  4. ve daha sonra Ok

WCF geri döndü ve çalışıyor.


1
Uygulamamı Varsayılan Web Sitesine taşıdığımda bu sorunla karşılaşıyordum. 3. nokta sorunumu çözmek için hile yaptı.
bikram s.

Yeni bir web sunucusuna taşındığımda bu benim için çalıştı. "Uygulamaya Dönüştür" işleminden sonra klasör simgesi değişti ve ASP.NET MVC web uygulaması o web sunucusunda çalışmaya başladı.
Greg Barth

11

Hata, kullandığınız kodun IIS'de bir sanal dizinin kurulmasını beklediğini gösterir.

Belgelere bakın ve gerekli sanal dizini ekleyin. İçinde bir dizin olmalıdır web.config(kök dizini değil).


8
Alt bir dizindeki ikinci bir web.config dosyasını kaldırmak sorunu çözdü.
Lucas B

10
Adamlarımdan biri onun vardı <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>onun içinde Web.configde Viewsbu soruna neden ziyade gövde klasöründe.
Serj Sagan


8

Son zamanlarda yapılan bir web.config değişikliği yanlış web.config dosyasında olabilir.

Views / web.config dosyasına bir <machineKey...>özellik eklenmişti . Kaç tane temizler ve yeniden oluşturursa yapsın, hata kaldı. Düzeltme özelliği /web.config köküne taşımak oldu .


Üst Web.config dosyasını yanlışlıkla / Views klasörüne kopyaladık. Views klasörü için orijinal, çok daha küçük sürümü buraya koyun ve site tekrar çalıştı.
Grandizer

6

eğer bu hatayla karşılaşırsan

Uygulama seviyesinin ötesinde allowDefinition = 'MachineToApplication' olarak kaydedilmiş bir bölümün kullanılması bir hatadır. Bu hata, sanal bir dizinin IIS'de uygulama olarak yapılandırılmamasından kaynaklanabilir

ÇÖZÜM
VS 2012 ile aynı sorunu yaşadım. Bunu şu şekilde çözdüm:

  1. Mevcut projenizi kaldırın
  2. .csproj dosyanızı düzenleyin
  3. Bunu bul <MvcBuildViews>false</MvcBuildViews>
  4. Yanlış yerine değeri true olarak değiştirin
  5. Projenizi tekrar yükleyin ve artık bu hatayı almamalısınız

Eğer bir çözümünüz varsa, derleyici tarafından oluşturulan projedeki obj klasörün içeriğini silmektir.


18
Bu ayar, garip MvcBuildViewsiçin trueilk etapta hata var nasıl.
Benjamin

Ayrıca MvcBuildViews true değiştirdikten sonra hata mesajı almaya başladı. Değeri false olarak değiştirerek hata mesajından kurtuldum.
Juha Palomäki

3
Hem sürüm hem de hata ayıklama modlarında "Temiz bir çözüm" yaptım ve şimdi yapı da çalışıyor<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki

@ JuhaPalomäki süper tatlı! Teşekkürler.
Haroon

@Visar_uruqi ile tam tersi bir durum yaşadım. Yani .csproj dosyamda MvcBuildViews true olarak ayarlanmış seçeneği vardı ve false olarak ayarlandığında hata atlandı (gösterilmemiştir).
Bronek

5

Benim durumumda, sorun sadece projeyi alt dizine yayınladıktan sonra ortaya çıktı . Bilgi eksikliğim nedeniyle, web_publishalt dizinimiweb_project dizinimi .

İçeriğin web_publishaynı zamanda Web.configprojenin içerdiği ile aynı olduğu açıktır . Ancak, iç içe alt dizinlerde arama yaparken kaçınılması gerektiğini web_projectbilmiyor . Bu şekilde, s kopyalandı ve hata ortaya çıktı.web_publishWeb.configWeb.config

Çözüm web_publishbaşka bir yere yerleştirmekti .


5

Benim durumumda, tüm web sitesinin başka bir kopyasını içeren bir "Yedekleme" klasörü vardı. Bu başka bir anlama geliyordu web.configve bu nedenle derleme bu hatayla başarısız oldu. "Yedekleme" klasörünü sildim, Hata Ayıkla ve Bırak derlemelerinde temiz bir çözüm yaptım ve hata kayboldu.


Benzer bir durum vardı, birisi diskte Web sitesi kökü içinde "Yayınlanmış" bir alt klasör oluşturmuştu (bu eski bir Web Projesi, Çözüm dosyası olmayanlardan biri) ve bunun içinde bir Web.config vardı. Hata, Visual Studio oluşturmaya çalıştığında oluştu ve "obj" klasörlerini temizleme / silme vb. Bu hatanın birkaç örneğini gördüm ve neredeyse her zaman bir yerde saklanan yinelenen bir Web.config ... (gerçekten kötü hata mesajı da!)
Detay

4

Benim durumumda,

Çözüm 6 proje, 1 ana ve 5 alt dizin içermektedir. web.config içeren tüm alt dizinler.

Alt dizinlerde herhangi bir sayfayı çalıştırırken aynı hatayı alıyordum.

Bu satırı web.config sitesinden kaldırdım,

<authentication mode="Windows"/>

bu benim için çalıştı.


Hangi çizgiyi kaldırdınız?
Mark Berry

Çizgi vardı ama sanırım bazı girinti sorunu nedeniyle göstermiyor. Kodu düzenledim ve bir kod bloğuna yapıştırdım, şimdi gösteriyor. Lütfen bir şeyde yardım edip edemeyeceğimi kontrol edin ve bana bildirin.
p_champ

Teşekkürler, bu benim için de başarısız olduğunu doğrular. Sadece bir sitem var, bu yüzden bir proje yerine bir Web sitesi olarak açarak dolaştım.
Mark Berry

4

Projenizi temizleme / obj klasörünü kaldırın (muhtemelen yayımla ve konuşlandırmayı mı kullanıyorsunuz? - içinde bir hata var)


Sadece benim için çalışan çözüm. Buraya <MvcBuildViews> true </MvcBuildViews> ayarını yaparak ulaşabilirsiniz.
Paul

3

Benim sorunum yanlışlıkla web servisimi VS2010 yeni bir kurulumda önceden tamamlanmış bir yerde yayınlamıştı.

PreCompiledWeb adlı bir klasöre yayınlamıştım ve şüphelendiğim web.config varlığını bozdu .

Sadece klasörü çektim ve projeyi yeniledim.

Bu hatayı çift tıkladığınızda - beni iptal eden o hatalı web.config dosyasına götürdü.


2

Net framework 2.0 projesini indirip VS2008'e açmak istediğiniz gibi sürüm problemi olabilir, o zaman en son sürüme yükseltmeniz gerekecektir ve VS aynı kök dizinde klasörün Yedeklemesini oluşturacaktır. cevabı buradan alabilirsiniz .


ranganh'ın cevabı burada biraz daha ayrıntı veriyor .
Mark Berry

2

Çözümüme oluşturulan Web Dağıtım Projesi ile çözümü oluştururken bu hatayla karşılaştım. Web Dağıtım Projesi'nin oluşturulduğu klasörü silerek hatayı gideririm. Bu klasör WDP özelliklerinin "Proje Klasörü" özelliğinde belirtildi


2

Bin ve obj klasörlerini silin. Ardından çözümü yeniden oluşturun.


Dosya Gezgini için, bu klasörleri bulmak / silmek üzere "obj" kind: = klasör ve "bin" kind: = klasörün arama sorgusunu kullanın. Bu benim için çalıştı.
Robert J. Good

2

Görünüşe göre çözümümde iki web.config dosyası vardı. MVC4 kullanıyorum ve Views altında başka bir yapılandırma dosyası vardı ve yanlış dosyada değişiklik yapıyordu. Orada düzeltildi bana yardımcı oldu.

Ancak global.asax dosyasındaki varsayılan yönlendirmeyi / yolu her zaman değiştirebilirsiniz.


1

Muhtemelen proje klasörü içinde sanal dizin olarak yapılandırılmamış bir alt asp.net proje klasörünüz var. IIS'de çalışacak projeyi ayarlayın.



1

Proje dosyasında "true" etkinleştirilmişse bu sorunu daha sık karşılaşıyorum.

  1. Yanlış ayarla

Jonny'nin dediği gibi:

  1. Çözümünüz Yayınlama modunda yapılandırılırken çözümü temizleyin.
  2. Çözümünüz Hata Ayıklama modunda yapılandırılırken çözümü temizleyin.
  3. Çözümünüz Hata Ayıklama modunda yapılandırılırken derleyin.

1

Web uygulaması olmak istemediğim bir projem vardı, klasör olmasını istedim. Cevap web.config dosyasını tamamen silmekti. Yalnızca uygulamanın köküne aittir.


1

Web sitenizi veya uygulamanızı bir sunucuda yayınlarken bu sorunla karşılaşırsanız, kullandığım basit çözüm dosyaları içeren klasörü web uygulamasına dönüştürmektir.


4
Merhaba, Stack Overflow'a hoş geldiniz! Cevabınızı genişletebilir misiniz? Klasörün bir Web Uygulamasına nasıl dönüştürüleceğini açıklayabilir misiniz? Bu, başkalarının cevabınızı daha iyi anlamasına yardımcı olacaktır.
Jesse

1
IIS Yöneticisi'nde, sağdaki Bağlantılar bölmesinin altında, oluşturduğunuz sitelerin (veya Varsayılan Web Sitesi) altındaki dizini sağ tıklatıp seçin Convert to Application.
Aske B.

1

Projemi hata ayıklama modunda yayınladıktan sonra VS 2013'te de aynı sorunu yaşadım. Sorun obj / files kaldırılarak çözüldü


1

Bir web sitesi projem var.

Benim durumumda çözüm dosyasını başka bir yola taşıdım ve bu da soruna neden oldu. Önceki konuma geri yükledi ve sorun çıktı.


1

Hala arayan herhangi biri için benim çözüm hem bin hem de obj klasörlerini silmek ve visual studio yeniden başlatmak düzeltmek gibi görünüyor.


1

Visual Studio aracılığıyla, FTP aracılığıyla harici bir sunucuya bir WCF Hizmeti yayınlamıştım . Yerel olarak ve dahili bir sunucuda yayınlarken iyi çalıştı, ancak harici olarak çalışmadı. Solüsyon oldu a sağlamadan yayımlamak Site Path (başka bir deyişle, doğrudan sanal dizinin kök dizininde yayınlamaktı.

Neden çalıştığından emin değilim, çünkü dosyaları burada listelenenler de dahil olmak üzere diğer birçok denemenin dışında harici bir FTP İstemcisi aracılığıyla köküne taşımayı denemiştim. Belki de FabianVal için olduğu gibi yayınlama profiliyle ilgili bir şeydi . Ama bu noktada artık test etme havasında değilim, çünkü bu sorunla ilgili tüm günler boşa gittikten sonra hızlanmak için acele ediyorum.


0

ipucu 1: temizleyip yeniden oluşturun.

ipucu 2: Sadece VS'yi kapatın ve tekrar açın.

ipucu 3: indirilen proje başka bir alt klasörün içinde olabilir ... .net dosyalarının bulunduğu klasörü açın.

c: / demo1 / demo / (tüm dosyalar)

Demoyu vs vs demo1'den açmalısınız.


0

Yukarıdaki her çözümü denedim, ama hiçbiri sorunum için işe yaramadı. (Bu sorunun 1000 çözümü olduğundan eminim) Senaryom için, test ettiğim WCF web hizmetimi üretime yayınlamaya çalışıyordum.

Ancak, üretimde sadece HTTPS olduğumuzu fark edemedim, yani her şeyi HTTPS'ye yönlendiriyoruz. Anlaşıldığı gibi, HTTPS yerine HTTP aracılığıyla hizmete işaret ediyordum, böylece hataya neden oluyordum. Bu senaryodaki çözüm, adres protokolünü HTTP yerine HTTPS olarak değiştirmekti.

Umarım bu problemi çözmeye çalışan bazı kötü ruhlara yardımcı olur.

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.