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
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 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.
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.
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. customErrors
Web.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.
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.axd
görüntüsündeki gibi) ve Enter tuşuna basın:
İş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:
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 value
ve dağıtılan Web.config dosyasında değiştirilecek olan budur. Bu kod, öğesinin özniteliğinin Environment
appSettings
ü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, appSettings
Web.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.SqlClient
ve 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin