ASP.NET ve "It is an error to use a section registered as allowDefinition = 'MachineToApplication' beyond application level" Hatası
Yazan : Yusuf Nar, Mart 12, 2007, Pazartesi 14:00
Etiket(ler) : asp.net, web.config, problemler, IIS 5.0, hata, authorization
Bir asp.net uygulamasını çalıştırırken bu hata mesajını alabilirsiniz. Sorunun sebebi 2 şeyden olabilir.
1.Sebep
Visual Studio ile yeni bir asp.net uygulaması oluşturduğunuzda visual studio sanal dizin oluşturarak bunu bir uygulama olarak konfigure eder. Fakat siz manuel olarak yeni sanal dizin (virtual directory) oluşturduğunuzda veya bir makinede hazırlanan asp.net uygulamasını başka bir makineye taşıdığınızda bunu IIS üzerinden uygulama olarak konfigure etmelisiniz ki çalışsın. Aksi takdirde yukarıdaki hatayı alabilirsiniz.
Bunu yapmak için IIS üzerinde sanal dizini tanımladıktan sonra oluşturduğunuz dizine sağ tıklayarak özelliklerine giriniz. Uygulama (Application) alanının karşısındaki oluştur(Create) butonuna tıklayıp Tamam(Ok) diyerek onaylayınız. Böylelikle uygulamayı oluşturmuş olacaksınız. Browser üzerinden şimdi uygulamayı çalıştırabilirsiniz.
2. Sebep
Uygulamanızda alt klasörler mutlaka vardır. Bu alt klasörler için web.config dosyanızı tanımlayabilirsiniz. Örneğin alt klasöre ait yetkilendirmeleri özelleştirerek bu klasöre erişimi sadece yetkili kullanıcılara vermek isteyebilirsiniz.
<configuration>
<system.web>
<authorization>
<allow roles="administrators" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
Bununla beraber bu alt klasörde kullandığınız web.config dosyasında session state, authentication gibi özellikleri tanımlayamazsınız. Sebebi ise, alt klasörü ayrı bir uygulama olarak tanımlamadıkça, bu özellikler override edilemezler.
Tabi alt klasöre web.config dosyasını yanlışlıkla eklemiş de olabilirsiniz. Bu durumda konfigurasyon dosyasını alt klasörden silmeniz hatayı düzeltecektir.