System.Security.SecurityException sanal dizini ASP.NET'da uzak bir paylaşımı işaret ettiğinde

Bu makale, Microsoft ASP'yi barındırmak için uzak paylaşıma işaret eden bir sanal dizin kullandığınızda oluşabilecek sorunu System.Security.SecurityException çözmenize yardımcı olur. NET tabanlı uygulama.

Orijinal ürün sürümü: ASP.NET
Özgün KB numarası: 320268

Belirtiler

ASP barındırmak için uzak paylaşımı işaret eden bir sanal dizin kullandığınızda. NET tabanlı uygulama, aşağıdaki örneklerden birine benzer bir hata iletisi alabilirsiniz:

  • İleti 1

    Güvenlik Özel Durumu Açıklaması: Uygulama, güvenlik ilkesi tarafından izin verilmeyen bir işlem gerçekleştirmeye çalıştı. Bu uygulamaya gerekli izni vermek için lütfen sistem yöneticinize başvurun veya yapılandırma dosyasında uygulamanın güven düzeyini değiştirin.
    Özel Durum Ayrıntıları: System.Security.SecurityException: Güvenlik hatası.
    Kaynak Hatası:
    Satır 30: özel statik bool __intialized = false; Satır 31: Satır 32: public Global_asax() { Satır 33: if ((ASP. Global_asax.__intialized == false)) { Satır 34: ASP. Global_asax.__intialized = true;

  • İleti 2

    /ApplicationName Uygulamasında Sunucu Hatası.
    Ayrıştırıcı Hata Açıklaması: Bu isteğe hizmet vermek için gereken bir kaynağı ayrıştırma sırasında bir hata oluştu. Lütfen aşağıdaki belirli ayrıştırma hata ayrıntılarını gözden geçirin ve kaynak dosyanızı uygun şekilde değiştirin.
    Ayrıştırıcı Hata İletisi: ApplicationName.Global türü yüklenemedi.
    Kaynak Hatası: Satır 1: <%@ Uygulama Kodubehind="Global.asax.cs" Inherits="ApplicationName.Global" %> Kaynak Dosyası: Application\global.asax Satırının Yolu: 1

Neden

Ad System.Web alanı, bu ad alanına AllowPartiallyTrustedCallersAttribute uygulanmamış. Daha fazla bilgi için desenler & uygulamalarını ziyaret edin.

My_Computer_Zone kod grubunda yer alan ve bu özniteliği olmayan tüm kodlar Için FullTrust kullanıcı hakkı gerekir. Bu nedenle, Web uygulamaları içeriğini tutan uzak paylaşım FullTrust gerektirir.

Çözüm

Bu davranışı çözmek için uzak paylaşıma FullTrust hakkı verin:

  1. Web sunucusunda Yönetim Araçları'nı açın ve ardından Microsoft .NET Framework Yapılandırması'na çift tıklayın.

  2. Çalışma Zamanı Güvenlik İlkesi'ni genişletin, Makine'yi ve ardından Kod Grupları'nı genişletin.

  3. All_Code sağ tıklayın ve yeni'yi seçin.

  4. Yeni kod grubu oluştur'u seçin. Kod grubunuz için uygulama paylaşımının adı gibi ilgili bir ad verin. İleri'yi seçin.

  5. Bu kod grubu için koşul türünü seçin listesinde URL'yi seçin.

  6. URL kutusuna paylaşımın yolunu aşağıdaki biçimde yazın:
    file:////\\computername\\sharename\*

    Not

    computername değerini uzak paylaşımı barındıran bilgisayarın adıyla değiştirin. sharename değerini paylaşımın adıyla değiştirin.

  7. İleri'yi seçin. Sonraki sayfada Var olan bir izin kümesini kullan'ı ve ardından FullTrust'ı seçin.

  8. İleri'yi ve ardından Son'u seçin.

  9. ASP.NET çalışan işlemini yeniden başlatmak için Internet Information Services'ı (IIS) yeniden başlatın.

Microsoft .NET Framework YapılandırmasıYönetim Araçları altında görüntülenmiyorsa, Microsoft .NET Framework Yapılandırması eklemek için .NET Framework Yazılım Geliştirme Seti'ni (SDK) yükleyebilirsiniz. Bunun yerine, değişikliği yapmak için aşağıdaki komutu çalıştırabilirsiniz:

Drive :\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on

Bu bağımsız değişkenlerin ne yaptıkları hakkında daha fazla bilgi için aşağıdaki komutu çalıştırın:

caspol.exe -?

Durum

Bu davranış tasarımdan kaynaklanır.

Daha fazla bilgi

Bu yapılandırmada, ASP.NET çalışan işleminin çalıştırıldığı hesabın uzak paylaşım üzerinde yeterli haklara sahip olması gerekir. Machine.config dosyasındaki etiketi kullanarak çalışan işleminin <processmodel> çalıştırıldığı hesabı ayarlayabilirsiniz.

Davranışı yeniden oluşturma adımları

  1. Uzak paylaşımı işaret eden yeni bir sanal dizin oluşturun.
  2. Sanal dizin için bir uygulama oluşturun. Paylaşıma bağlanan kullanıcının uzak içeriğe okuma erişimi olduğundan emin olun.
  3. <processmodel>Machine.config dosyasının etiketinde, kullanıcıyı uzak paylaşımda liste, okuma ve yürütme izinlerine sahip bir etki alanı kullanıcısı olarak değiştirin.
  4. Satır içi bir .aspx dosyası oluşturun ve sonra dosyayı uzak paylaşıma yerleştirin.
  5. Sayfa için bir istekte bulun.

Başvurular

ASPNET hesabının ASP.NET uygulamaları çalıştırmak için gerektirdiği izinler hakkında daha fazla bilgi için bkz. ASP.NET Kimliğine Giriş. ASP.NET güvenliği hakkında daha fazla bilgi için bkz . BİlGİ: ASP.NET Güvenliğe Genel Bakış.