Visual Studio kullanarak Web dağıtımı ASP.NET: klasör Izinlerini ayarlama

Tom Dykstra tarafından

Başlatıcı projesi indir

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. Seriler hakkında daha fazla bilgi için, serideki ilk öğreticiyebakın.

Genel bakış

Bu öğreticide, uygulamanın bu klasörde günlük dosyaları oluşturabilmesi için dağıtılan Web sitesindeki ELMAH klasörü için klasör izinlerini ayarlarsınız.

Visual Studio geliştirme sunucusu (Cassini) veya IIS Express kullanarak bir Web uygulamasını test ettiğinizde, uygulama kimliğiniz altında çalışır. Büyük olasılıkla geliştirme bilgisayarınızda bir yöneticidir ve herhangi bir klasördeki herhangi bir dosya için herhangi bir şey yapmak üzere tam yetkiye sahip olursunuz. 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örlerinde okuma ve yürütme izinlerine sahiptir, ancak yazma erişimine sahip değildir.

Bu durum, uygulamanız Web uygulamalarında ortak olması gereken dosyaları oluşturduğunda veya güncelleştirirse bir sorun haline gelir. Contoso University 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 dosyaları karşıya yüklemesine veya sitenizdeki bir klasöre veri yazan diğer görevleri gerçekleştirmesine izin verebilir.

Anımsatıcı: bir hata iletisi alırsanız veya öğreticide ilerlediyseniz bir şey çalışmadıysanız sorun giderme sayfasınıkontrol ettiğinizden emin olun.

Test hatası günlüğü ve raporlama

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

Bir tarayıcı açın ve http://localhost/ContosoUniversitygidin ve sonra Studentsxxx. aspxgibi GEÇERSIZ bir URL isteyin. Web. config dosyasındaki customErrors ayarı "RemoteOnly" olduğundan ve IIS 'yi yerel olarak çalıştırdığınız için 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 ' i çalıştırın. Yönetici hesabı kimlik bilgileri ("yönetici" ve "devpwd") ile oturum açtıktan sonra, ELMAH, ELMAH KLASÖRÜNDE bir XML dosyası oluşturamadığından boş bir hata günlüğü sayfası görürsünüz:

Hata günlüğü boş

ELMAH klasörü üzerinde yazma izni ayarlama

Klasör izinlerini el ile ayarlayabilir veya dağıtım sürecinin otomatik bir parçası yapabilirsiniz. Bunu otomatik hale getirmek için karmaşık MSBuild kodu gerekir ve bunu yalnızca ilk dağıttığınız zaman yapmanız gerektiğinden, el ile nasıl yapılacağını aşağıdaki adımları izleyin. (Dağıtım işleminin bu bölümünü oluşturma hakkında daha fazla bilgi için bkz. Web 'de klasör Izinlerini ayarlama , saymış hashed 'in blogu üzerinde yayımlama.)

  1. Dosya Gezgini'nde C:\inetpub\wwwroot\contosoüniversitesi' ne gidin. ELMAH klasörüne sağ tıklayın, Özellikler' i seçin ve ardından güvenlik sekmesini seçin.

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

  3. ELMAH izinleri iletişim kutusunda, DefaultAppPool' ı seçin ve ardından izin ver sütununda yazma onay kutusunu seçin.

    ELMAH klasörü için izinler

    ( Grup veya Kullanıcı adları listesinde DefaultAppPool ÖĞESINI görmüyorsanız, bilgisayarınızda IIS ve ASP.NET 4 ' ü ayarlamak için bu öğreticide belirtilenden farklı bir yöntem kullanmışsınızdır. Bu durumda, Contoso Üniversitesi uygulamasına atanan uygulama havuzu tarafından kullanılan kimliği öğ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 Tamam ' a tıklayın.

Hata günlüğü ve raporlama yeniden test etme

Aynı şekilde bir hataya neden olan (hatalı URL iste) ve hata günlüğü sayfasını çalıştırarak test edin. Bu kez hata sayfada görüntülenir.

ELMAH hata günlüğü sayfası

Özet

Contoso Üniversitesi 'nin yerel bilgisayarınızda IIS 'de düzgün şekilde ç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 sunulacaktır.

Daha fazla bilgi

Bu örnekte, ELMAH 'nin günlük dosyalarını kaydedememesinin nedeni oldukça açıktır. Sorun nedeninin açık olmadığı durumlarda IIS izlemeyi kullanabilirsiniz; IIS.net sitesinde IIS 7 ' de Izleme kullanarak başarısız Isteklerin sorunlarını giderme bölümüne bakın.

Uygulama havuzu kimliklerine izin verme hakkında daha fazla bilgi için, IIS.net sitesindeki dosya sistemi ACL 'Leri aracılığıyla IIS 'Deki uygulama havuzu kimlikleri ve güvenli içerik bölümüne bakın.