Aracılığıyla paylaş


Visual Studio veya Visual Web Developer kullanarak SQL Server Compact ile ASP.NET Web Uygulaması Dağıtma: Web.Config Dosya Dönüştürmeleri - 3 /12

tarafından Tom Dykstra

Başlangıç Projelerini İndir

Bu öğretici serisi, Visual Studio 2012 RC veya web için Visual Studio Express 2012 RC kullanarak SQL Server Compact veritabanı içeren bir ASP.NET web uygulaması projesi dağıtmayı (yayımlamayı) gösterir. Web Yayımlama Güncelleştirmesi'ni yüklerseniz Visual Studio 2010'u da kullanabilirsiniz. Seriye giriş için serideki ilk öğreticiye bakın.

Visual Studio 2012'nin RC sürümünden sonra sunulan dağıtım özelliklerini gösteren, SQL Server Compact dışındaki SQL Server sürümleri dağıtmayı ve Azure App Service Web Apps'ye dağıtmayı gösteren bir öğretici için bkz. Visual Studio kullanarak Web Dağıtımı'nı ASP.NET.

Genel Bakış

Bu öğreticide, Web.config dosyasını farklı hedef ortamlara dağıtırken değiştirme işlemini otomatikleştirme işlemi gösterilmektedir. Çoğu uygulamanın Web.config dosyasında uygulama dağıtıldığında farklı olması gereken ayarları vardır. Bu değişiklikleri yapma işlemini otomatikleştirmek, her dağıttığınızda bunları el ile yapmak zorunda kalmanızı engeller; bu yorucu ve hataya açıktır.

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

Web.config Dönüştürmeleri ile Web Dağıtım Parametreleri Karşılaştırması

Web.config dosya ayarlarını değiştirme işlemini otomatikleştirmenin iki yolu vardır: Web.config dönüştürmeleri ve Web Dağıtımı parametreleri. Web.config dönüştürme dosyası, dağıtıldığında Web.config dosyasının nasıl değiştirileceğini belirten XML işaretlemesi içerir. Belirli derleme yapılandırmaları ve belirli yayımlama profilleri için farklı değişiklikler belirtebilirsiniz. Varsayılan derleme yapılandırmaları Hata Ayıklama ve Yayın'dır ve özel derleme yapılandırmaları oluşturabilirsiniz. Yayımlama profili genellikle bir hedef ortama karşılık gelir. ( Test Ortamı Olarak IIS'ye Dağıtma öğreticisinde yayımlama profilleri hakkında daha fazla bilgi edineceksiniz.)

Web Dağıtımı parametreleri, Web.config dosyalarda bulunan ayarlar da dahil olmak üzere dağıtım sırasında yapılandırılması gereken birçok farklı ayar türünü belirtmek için kullanılabilir. Web.config dosya değişikliklerini belirtmek için kullanıldığında, Web Dağıtımı parametrelerinin ayarlanması daha karmaşıktır, ancak dağıtana kadar ayarlanacak değeri bilmediğiniz durumlarda kullanışlıdır. Örneğin, kurumsal bir ortamda bir dağıtım paketi oluşturup üretime yüklemek üzere BT departmanındaki bir kişiye verebilirsiniz ve bu kişinin bilmediğiniz bağlantı dizelerini veya parolaları girebilmesi gerekir.

Bu öğreticinin kapsadığı senaryo için ,Web.config dosyasında yapılması gereken her şeyi biliyorsunuz, bu nedenle Web Dağıtımı parametrelerini kullanmanız gerekmez. Kullanılan derleme yapılandırmasına bağlı olarak farklılık gösteren ve kullanılan yayımlama profiline bağlı olarak farklılık gösteren bazı dönüştürmeleri yapılandıracaksınız.

Yayımlama Profilleri için Dönüştürme Dosyaları Oluşturma

Çözüm Gezgini'da, iki varsayılan derleme yapılandırması için varsayılan olarak oluşturulan Web.Debug.config ve Web.Release.config dönüştürme dosyalarını görmek içinWeb.configgenişletin.

Web.config_transform_files

Web.config dosyasına sağ tıklayıp bağlam menüsünden Yapılandırma Dönüşümleri Ekle'yi seçerek özel derleme yapılandırmaları için dönüştürme dosyaları oluşturabilirsiniz, ancak bu öğretici için bunu yapmanız gerekmez.

Derleme yapılandırması yerine dağıtım hedefiyle ilgili değişiklikleri yapılandırmak için iki dönüştürme dosyası daha gerekir. Bu tür bir ayarın tipik bir örneği, test ve üretim için farklı olan bir WCF uç noktasıdır. Sonraki öğreticilerde Test ve Üretim adlı yayımlama profilleri oluşturacaksınız, bu nedenle birWeb.Test.config dosyası ve Web.Production.config dosyası gerekir.

Yayımlama profillerine bağlı dönüştürme dosyaları el ile oluşturulmalıdır. Çözüm Gezgini'da ContosoUniversity projesine sağ tıklayın ve Windows Gezgini'nde Klasör Aç'ı seçin.

Open_folder_in_Windows_Explorer

Windows Gezgini'ndeWeb.Release.config dosyasını seçin, dosyayı kopyalayın ve ardından iki kopyasını yapıştırın. Bu kopyaları Web.Production.config ve Web.Test.configyeniden adlandırın, ardından Windows Gezgini'ne kapatın.

yeni dosyaları görmek için Çözüm GezginiYenile'ye tıklayın.

Yeni dosyaları seçin, sağ tıklayın ve ardından bağlam menüsünde Projeye Ekle'ye tıklayın.

Test ve Üretim yapılandırma dosyalarını projeye ekleme

Bu dosyaların dağıtılmasını önlemek için, bunları Çözüm Gezgini'de seçin ve Özellikler penceresinde Derleme Eylemi özelliğini İçerik yerine Yok olarak değiştirin. (Derleme yapılandırmalarını temel alan dönüştürme dosyalarının dağıtılması otomatik olarak engellenir.)

ArtıkWeb.configdönüştürme dosyalarına Web.config dönüştürmeleri girmeye hazırsınız.

Hata Günlüğü Erişimini Yöneticilerle Sınırlama

Uygulama çalışırken bir hata varsa, uygulama sistem tarafından oluşturulan hata sayfasının yerine genel bir hata sayfası görüntüler ve hata günlüğü ve raporlaması için Elmah NuGet paketini kullanır. customErrorsWeb.config dosyasındaki öğesi hata sayfasını belirtir:

<customErrors mode="RemoteOnly" defaultRedirect="~/GenericErrorPage.aspx">
  <error statusCode="404" redirect="~/GenericErrorPage.aspx" />
</customErrors>

Hata sayfasını görmek için öğesinin customErrors özniteliğini geçici olarak "RemoteOnly" yerine "Açık" olarak değiştirin mode ve uygulamayı Visual Studio'dan çalıştırın. Studentsx.aspx gibi geçersiz bir URL isteyerek hataya neden olur. IIS tarafından oluşturulan "sayfa bulunamadı" hata sayfası yerine GenericErrorPage.aspx sayfasını görürsünüz.

Error_page

Hata günlüğünü görmek için, bağlantı noktası numarasından sonraki URL'deki her şeyi elmah.axd ile değiştirin (örneğin ekran http://localhost:51130/elmah.axdgörüntüsündeki gibi) ve Enter tuşuna basın:

Elmah_log_page

İşiniz bittiğinde öğeyi customErrors "RemoteOnly" moduna geri döndürmeyi unutmayın.

Geliştirme bilgisayarınızda hata günlüğü sayfasına ücretsiz erişim izni vermek uygundur, ancak üretimde bu bir güvenlik riski oluşturur. Üretim sitesi için, Web.Production.config dosyasında bir dönüşüm yapılandırarak hata günlüğü erişimini yalnızca yöneticilere kısıtlayan bir yetkilendirme kuralı ekleyebilirsiniz.

Web.Production.config açın ve burada gösterildiği gibi açılış configuration etiketinden hemen sonra yeni location bir öğe ekleyin. (Yalnızca bağlam sağlamak için burada gösterilen çevresindeki işaretlemeyi değil yalnızca location öğesini eklediğinizden emin olun.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <location path="elmah.axd" xdt:Transform="Insert">
      <system.web>
        <authorization>
          <allow roles="Administrator" />
          <deny users="*" />
        </authorization>
      </system.web>
    </location>
</configuration>

Transform"Insert" özniteliği değeri, bu location öğenin Web.config dosyasındaki mevcut location öğelere eşdüzey olarak eklenmesine neden olur. (Kredileri Güncelleştir sayfası için yetkilendirme kurallarını belirten bir location öğe zaten var.) Dağıtımdan sonra üretim sitesini test ettiğinizde, bu yetkilendirme kuralının etkili olduğunu doğrulamak için test edersiniz.

Test ortamında hata günlüğü erişimini kısıtlamanız gerekmez, bu nedenle bu kodu Web.Test.config dosyasına eklemeniz gerekmez.

Not

Güvenlik Notu Hiçbir zaman hata ayrıntılarını üretim uygulamasında herkese açık olarak görüntülemeyin veya bu bilgileri ortak bir konumda depolamayın. Saldırganlar bir sitedeki güvenlik açıklarını keşfetmek için hata bilgilerini kullanabilir. ElmaH'ı kendi uygulamanızda kullanıyorsanız, güvenlik risklerini en aza indirmek için ELMAH'ın nasıl yapılandırılabildiğini araştırdığınızdan emin olun. Bu öğreticideki ELMAH örneği önerilen bir yapılandırma olarak kabul edilmemelidir. Uygulamanın dosyaları oluşturabilmesi gereken bir klasörün nasıl işlendiğini göstermek için seçilen bir örnektir.

Ortam Göstergesi Ayarlama

Yaygın bir senaryo, dağıttığınız her ortamda farklı olması gereken Web.config dosya ayarlarına sahip olmaktır. Örneğin, WCF hizmetini çağıran bir uygulamanın test ve üretim ortamlarında farklı bir uç noktaya ihtiyacı olabilir. Contoso University uygulaması da bu tür bir ayar içerir. Bu ayar, sitenin sayfalarında geliştirme, test veya üretim gibi hangi ortamda olduğunuzu belirten görünür bir göstergeyi denetler. Ayar değeri, uygulamanın Site.Master ana sayfasındaki ana başlığa "(Geliştirme)" veya "(Test)" ekleyip eklemeyeceğini belirler:

Environment_indicator

Uygulama üretimde çalışırken ortam göstergesi atlanır.

Contoso University web sayfaları, uygulamanın hangi ortamda çalıştığını belirlemek için Web.config dosyasında ayarlanan appSettings bir değeri okur:

<appSettings>
    <add key="Environment" value="Dev" />
</appSettings>

Değer, test ortamında "Test" ve üretim ortamında "Üretim" olmalıdır.

Web.Production.config açın ve daha önce eklediğiniz öğenin açılış etiketinden location hemen önce bir appSettings öğe ekleyin:

<appSettings>
    <add key="Environment" value="Prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>

xdt:Transform"SetAttributes" öznitelik değeri, bu dönüşümün amacının Web.config dosyasındaki mevcut bir öğenin öznitelik değerlerini değiştirmek olduğunu gösterir. xdt:Locator"Match(key)" öznitelik değeri, değiştirilecek öğenin özniteliği burada belirtilen öznitelikle eşleşen key öğe olduğunu key gösterir. öğesinin add diğer tek özniteliğidir valueve dağıtılan Web.config dosyasında değiştirilecek olan budur. Bu kod, öğesinin özniteliğinin EnvironmentappSettings üretime dağıtılan Web.config dosyasında "Prod" olarak ayarlanmasına neden olurvalue.

Ardından, " Prod" yerine "Test" olarak ayarlamak value dışında aynı değişikliğiWeb.Test.configdosyasına uygulayın. İşiniz bittiğinde, appSettingsWeb.Test.config'daki bölüm aşağıdaki örneğe benzer olacaktır:

<appSettings>
    <add key="Environment" value="Test" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>

Hata Ayıklama Modunu Devre Dışı Bırakma

Yayın derlemesi için, hangi ortama dağıttığınıza bakılmaksızın hata ayıklamanın etkinleştirilmesini istemezsiniz. Varsayılan olarak Web.Release.config dönüştürme dosyası, özniteliği öğesinden compilation kaldıran debug kodla otomatik olarak oluşturulur:

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

özniteliği, Transform bir Yayın derlemesi debug dağıttığınızda özniteliğin dağıtılan Web.config dosyasından atlanmasını sağlar.

Aynı dönüşüm Test ve Üretim dönüşüm dosyalarında da geçerlidir çünkü bunları Yayın dönüştürme dosyasını kopyalayarak oluşturdunuz. Orada çoğaltılmış olması gerekmez, bu nedenle bu dosyaların her birini açın, derleme öğesini kaldırın ve her dosyayı kaydedip kapatın.

Bağlantı Dizelerini Ayarlama

Çoğu durumda, bağlantı dizelerini yayımlama profilinde belirtebileceğiniz için bağlantı dizesi dönüştürmeleri ayarlamanız gerekmez. Ancak bir SQL Server Compact veritabanı dağıtırken ve hedef sunucudaki veritabanını güncelleştirmek için Entity Framework Code First Migrations kullandığınızda bir özel durum vardır. Bu senaryo için, veritabanı şemasını güncelleştirmek için sunucuda kullanılacak ek bir bağlantı dizesi belirtmeniz gerekir. Bu dönüşümü ayarlamak için, hem Web.Test.config hem de Web.Production.config dönüştürme dosyalarında yapılandırma> etiketini açtıktan< hemen sonra bir <connectionStrings> öğesi ekleyin:

<connectionStrings>
  <add name="SchoolContext_DatabasePublish" connectionString="Data Source=|DataDirectory|School-Prod.sdf" providerName="System.Data.SqlServerCe.4.0" xdt:Transform="Insert"/>
</connectionStrings>

Transform özniteliği, bu bağlantı dizesinin dağıtılan Web.config dosyasındaki connectionStrings öğesine ekleneceğini belirtir. (Yayımlama işlemi, yoksa bu ek bağlantı dizesini sizin için otomatik olarak oluşturur, ancak varsayılan olarak providerName özniteliği olarak ayarlanır System.Data.SqlClientve bu da SQL Server Compact için çalışmaz. Bağlantı dizesini el ile ekleyerek dağıtım işleminin yanlış sağlayıcı adıyla bir bağlantı dizesi öğesi oluşturmasını engellersiniz.)

Contoso Üniversitesi uygulamasını test etmek ve üretime dağıtmak için ihtiyacınız olan tüm Web.config dönüşümlerini belirttiniz. Aşağıdaki öğreticide, proje özelliklerini ayarlamayı gerektiren dağıtım kurulum görevlerini gerçekleştireceksiniz.

Daha Fazla Bilgi

Bu öğretici kapsamındaki konular hakkında daha fazla bilgi için ASP.NET Dağıtım İçerik Eşlemesi'ndeki Web.config dönüştürme senaryosuna bakın.