Visual Studio kullanarak Web dağıtımı ASP.NET: klasör Izinlerini ayarlamaASP.NET Web Deployment using Visual Studio: Setting Folder Permissions

Tom Dykstra tarafındanby Tom Dykstra

Başlatıcı projesi indirDownload Starter Project

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.This tutorial series shows you how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider, by using Visual Studio 2012 or Visual Studio 2010. Seriler hakkında daha fazla bilgi için, serideki ilk öğreticiyebakın.For information about the series, see the first tutorial in the series.

Genel bakışOverview

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.In this tutorial, you set folder permissions for the Elmah folder in the deployed web site so that the application can create log files in that folder.

Visual Studio geliştirme sunucusu (Cassini) veya IIS Express kullanarak bir Web uygulamasını test ettiğinizde, uygulama kimliğiniz altında çalışır.When you test a web application in Visual Studio using the Visual Studio Development Server (Cassini) or IIS Express, the application runs under your identity. 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.You are most likely an administrator on your development computer and have full authority to do anything to any file in any folder. Ancak bir uygulama IIS altında çalıştığında, sitenin atandığı uygulama havuzu için tanımlanan kimlik altında çalışır.But when an application runs under IIS, it runs under the identity defined for the application pool that the site is assigned to. Bu, genellikle sınırlı izinlere sahip sistem tanımlı bir hesaptır.This is typically a system-defined account that has limited permissions. 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.By default it has read and execute permissions on your web application's files and folders, but it doesn't have write access.

Bu durum, uygulamanız Web uygulamalarında ortak olması gereken dosyaları oluşturduğunda veya güncelleştirirse bir sorun haline gelir.This becomes an issue if your application creates or updates files, which is a common need in web applications. Contoso University uygulamasında, ELMAH, hatalarla ilgili ayrıntıları kaydetmek için ELMAH klasöründe XML dosyaları oluşturur.In the Contoso University application, Elmah creates XML files in the Elmah folder in order to save details about errors. 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.Even if you don't use something like Elmah, your site might let users upload files or perform other tasks that write data to a folder in your site.

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.Reminder: If you get an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

Test hatası günlüğü ve raporlamaTest error logging and reporting

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.To see how the application doesn't work correctly in IIS (although it did when you tested it in Visual Studio), you can cause an error that would normally be logged by Elmah, and then open the Elmah error log to see the details. ELMAH bir XML dosyası oluşturamadı ve hata ayrıntılarını depoladıysa boş bir hata raporu görürsünüz.If Elmah was unable to create an XML file and store the error details, you see an empty error report.

Bir tarayıcı açın ve http://localhost/ContosoUniversitygidin ve sonra Studentsxxx. aspxgibi GEÇERSIZ bir URL isteyin.Open a browser and go to http://localhost/ContosoUniversity, and then request an invalid URL like Studentsxxx.aspx. 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:You see a system-generated error page instead of the GenericErrorPage.aspx page because the customErrors setting in the Web.config file is "RemoteOnly" and you are running IIS locally:

HTTP 404 hata sayfası

Şimdi hata raporunu görmek için ELMAH. axd ' i çalıştırın.Now run Elmah.axd to see the error report. 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:After you log in with the administrator account credentials ("admin" and "devpwd"), you see an empty error log page because Elmah was unable to create an XML file in the Elmah folder:

Hata günlüğü boş

ELMAH klasörü üzerinde yazma izni ayarlamaSet write permission on the Elmah folder

Klasör izinlerini el ile ayarlayabilir veya dağıtım sürecinin otomatik bir parçası yapabilirsiniz.You can set folder permissions manually or you can make it an automatic part of the deployment process. 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.Making it automatic requires complex MSBuild code, and since you only have to do this the first time you deploy, the following steps how to do it manually. (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.)(For information about how to make this part of the deployment process, see Setting Folder Permissions on Web Publish on Sayed Hashimi's blog.)

  1. Dosya Gezgini'nde C:\inetpub\wwwroot\contosoüniversitesi' ne gidin.In File Explorer, navigate to C:\inetpub\wwwroot\ContosoUniversity. ELMAH klasörüne sağ tıklayın, Özellikler' i seçin ve ardından güvenlik sekmesini seçin.Right-click the Elmah folder, select Properties, and then select the Security tab.

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

  3. ELMAH izinleri iletişim kutusunda, DefaultAppPool' ı seçin ve ardından izin ver sütununda yazma onay kutusunu seçin.In the Permissions for Elmah dialog box, select DefaultAppPool, and then select the Write check box in the Allow column.

    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.(If you don't see DefaultAppPool in the Group or user names list, you probably used some other method than the one specified in this tutorial to set up IIS and ASP.NET 4 on your computer. Bu durumda, Contoso Üniversitesi uygulamasına atanan uygulama havuzu tarafından kullanılan kimliği öğrenin ve bu kimliğe yazma izni verin.In that case, find out what identity is used by the application pool assigned to the Contoso University application, and grant write permission to that identity. Bu öğreticinin sonundaki uygulama havuzu kimlikleri hakkındaki bağlantılara bakın.) Her iki iletişim kutusunda Tamam ' a tıklayın.See the links about application pool identities at the end of this tutorial.) Click OK in both dialog boxes.

Hata günlüğü ve raporlama yeniden test etmeRetest error logging and reporting

Aynı şekilde bir hataya neden olan (hatalı URL iste) ve hata günlüğü sayfasını çalıştırarak test edin.Test by causing an error again in the same way (request a bad URL) and run the Error Log page. Bu kez hata sayfada görüntülenir.This time the error appears on the page.

ELMAH hata günlüğü sayfası

ÖzetSummary

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.You have now completed all of the tasks necessary to get Contoso University working correctly in IIS on your local computer. Sonraki öğreticide, siteyi Azure 'a dağıtarak genel kullanıma sunulacaktır.In the next tutorial, you will make the site publicly available by deploying it to Azure.

Daha fazla bilgiMore information

Bu örnekte, ELMAH 'nin günlük dosyalarını kaydedememesinin nedeni oldukça açıktır.In this example, the reason why Elmah was unable to save log files was fairly obvious. 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.You can use IIS tracing in cases where the cause of the problem is not so obvious; see Troubleshooting Failed Requests Using Tracing in IIS 7 on the IIS.net site.

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.For more information about how to grant permissions to application pool identities, see Application Pool Identities and Secure Content in IIS Through File System ACLs on the IIS.net site.