Aracılığıyla paylaş


Visual Studio kullanarak Web Dağıtımı ASP.NET: Klasör İzinlerini Ayarlama

tarafından Tom Dykstra

Başlangıç Projelerini İndir

Bu öğretici serisi, Visual Studio 2012 veya Visual Studio 2010 kullanarak bir ASP.NET web uygulamasını Azure App Service Web Apps veya üçüncü taraf barındırma sağlayıcısına dağıtmayı (yayımlamayı) gösterir. Seri hakkında bilgi için serideki ilk öğreticiye bakın.

Genel Bakış

Bu öğreticide, uygulamanın söz konusu klasörde günlük dosyaları oluşturabilmesi için dağıtılan web sitesindeki Elmah klasörü için klasör izinleri ayarlarsınız.

Visual Studio Geliştirme Sunucusu (Cassini) veya IIS Express kullanarak Visual Studio'da bir web uygulamasını test ettiğinizde, uygulama sizin kimliğiniz altında çalışır. Büyük olasılıkla geliştirme bilgisayarınızda bir yöneticisiniz ve herhangi bir klasördeki herhangi bir dosyaya herhangi bir şey yapmak için tam yetkiye sahipsiniz. Ancak bir uygulama IIS altında çalıştığında, sitenin atandığı uygulama havuzu için tanımlanan kimlik altında çalışır. Bu genellikle sınırlı izinlere sahip sistem tanımlı bir hesaptır. Varsayılan olarak, web uygulamanızın dosya ve klasörleri üzerinde okuma ve yürütme izinleri vardır, ancak yazma erişimi yoktur.

Uygulamanız web uygulamalarında yaygın olarak kullanılan bir gereksinim olan dosyaları oluşturur veya güncelleştirirse bu bir sorun haline gelir. Contoso Üniversitesi uygulamasında Elmah, hatalarla ilgili ayrıntıları kaydetmek için Elmah klasöründe XML dosyaları oluşturur. Elmah gibi bir şey kullanmasanız bile, siteniz kullanıcıların sitenizdeki bir klasöre veri yazan dosyaları karşıya yüklemesine veya başka görevler gerçekleştirmesine izin verebilir.

Anımsatıcı: Öğreticide ilerlerken bir hata iletisi alırsanız veya bir şey çalışmıyorsa sorun giderme sayfasını kontrol edin.

Test hatası günlüğe kaydetme ve raporlama

Uygulamanın IIS'de nasıl düzgün çalışmadığını görmek için (Visual Studio'da test ettiğinizde olsa da), elmah tarafından normalde günlüğe kaydedilecek bir hataya neden olabilir ve ardından ayrıntıları görmek için Elmah hata günlüğünü açabilirsiniz. Elmah xml dosyası oluşturamadıysa ve hata ayrıntılarını depolayamadıysa, boş bir hata raporu görürsünüz.

Bir tarayıcı açın ve adresine http://localhost/ContosoUniversitygidin ve Studentsx.aspx gibi geçersiz bir URL isteyin. Web.config dosyasındaki ayar "RemoteOnly" olduğundan customErrors ve IIS'yi yerel olarak çalıştırdığınızdan GenericErrorPage.aspx sayfası yerine sistem tarafından oluşturulan bir hata sayfası görürsünüz:

HTTP 404 hata sayfası

Şimdi hata raporunu görmek için Elmah.axd dosyasını çalıştırın. Yönetici hesabı kimlik bilgileriyle ("admin" ve "devpwd") oturum açtıktan sonra Elmah, Elmah klasöründe xml dosyası oluşturamadığından boş bir hata günlüğü sayfası görürsünüz:

Hata günlüğü boş

Elmah klasöründe yazma izni ayarlama

Klasör izinlerini el ile ayarlayabilir veya dağıtım işleminin otomatik bir parçası yapabilirsiniz. Bunu otomatik yapmak karmaşık MSBuild kodu gerektirir ve bunu yalnızca ilk kez dağıttığınızda yapmanız gerektiğinden, aşağıdaki adımların el ile yapılması gerekir. (Dağıtım işleminin bu kısmını nasıl yapacağınız hakkında bilgi için, Sayed Hashimi'nin blogundaki Web'de Klasör yayımlama izinlerini ayarlama bölümüne bakın.)

  1. Dosya Gezgini'daC:\inetpub\wwwroot\ContosoUniversity konumuna gidin. Elmah klasörüne sağ tıklayın, Özellikler'i ve ardından Güvenlik sekmesini seçin.

  2. Düzenle'ye tıklayın.

  3. Elmah İzinleri iletişim kutusunda DefaultAppPool'u seçin ve ardından İzin Versütunundaki Yaz onay kutusunu seçin.

    ELMAH klasörü izinleri

    (Grup veya kullanıcı adları listesinde DefaultAppPool'u görmüyorsanız, bilgisayarınızda IIS ve ASP.NET 4'i ayarlamak için büyük olasılıkla bu öğreticide belirtilen yöntemden başka bir yöntem kullanmışsınızdır. Bu durumda, Contoso Üniversitesi uygulamasına atanan uygulama havuzu tarafından hangi kimliğin kullanıldığını öğrenin ve bu kimliğe yazma izni verin. Bu öğreticinin sonundaki uygulama havuzu kimlikleri hakkındaki bağlantılara bakın.) her iki iletişim kutusunda da Tamam'a tıklayın.

Hata günlüğünü ve raporlamayı yeniden test etme

Aynı şekilde yeniden hataya neden olarak test edin (hatalı BIR URL isteyin) ve Hata Günlüğü sayfasını çalıştırın. Bu kez hata sayfada görünür.

ELMAH Hata Günlüğü Sayfası

Özet

Contoso Üniversitesi'nin yerel bilgisayarınızdaki IIS'de düzgün çalışmasını sağlamak için gereken tüm görevleri tamamladınız. Sonraki öğreticide, siteyi Azure'a dağıtarak genel kullanıma sunacaksınız.

Daha fazla bilgi

Bu örnekte Elmah'ın günlük dosyalarını kaydedememesinin nedeni oldukça açıktı. Sorunun nedeninin çok açık olmadığı durumlarda IIS izlemeyi kullanabilirsiniz; IIS.net sitesinde IIS 7'de İzleme Kullanarak Başarısız İstek sorunlarını giderme bölümüne bakın.

Uygulama havuzu kimliklerine izin verme hakkında daha fazla bilgi için bkz. IIS.net sitesindeki Dosya Sistemi ACL'leri Aracılığıyla IIS'deUygulama Havuzu Kimlikleri ve Güvenli İçerik.