web.config dosyası

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

web.config, IIS ile barındırılan bir uygulamayı yapılandırmak için IIS ve ASP.NET Core Modülü tarafından okunan bir dosyadır.

web.config dosyasının konumu

ASP.NET Core Modülü'nü doğru ayarlayabilmek için, dağıtılan uygulamanın içerik kökü yolunda (tipik olarak uygulama temel yolu) web.config dosyası mevcut olmalıdır. Bu, IIS'ye sağlanan web sitesi fiziksel yoluyla aynı konumdur. Web Dağıtımı'nı kullanarak birden fazla uygulamanın yayımlanmasını sağlamak için uygulamanın kökünde web.config dosyasının bulunması gereklidir.

Uygulamanın fiziksel yolunda {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (XML Belgeleri açıklamaları) ve {ASSEMBLY}.deps.json gibi (burada {ASSEMBLY} yer tutucusu derleme adıdır) gibi hassas dosyalar bulunur. web.config dosyası mevcut olduğunda ve site normal şekilde başlatıldığında, bu hassas dosyalar istenirse ISS bunları kullanıma sunmaz. web.config dosyası yoksa, yanlış adlandırıldıysa veya siteyi normal başlatma için yapılandıramazsa, IIS hassas dosyaları genel kullanıma sunabilir.

web.config dosyası dağıtımda her zaman doğru adlandırılmış olarak ve siteyi normal başlatma için yapılandırabilecek şekilde mevcut olmalıdır. web.config dosyasını hiçbir zaman üretim dağıtımından kaldırmayın.

Projede web.config dosyası yoksa, dosya ASP.NET Core Modülü'nü yapılandırmak için doğru processPath ve arguments ile oluşturulur ve yayımlanan çıkışa taşınır.

Projede web.config dosyası varsa, dosya ASP.NET Core Modülü'nü yapılandırmak için doğru processPath ve arguments ile dönüştürülür ve yayımlanan çıkışa taşınır. Dönüşüm dosyadaki IIS yapılandırma ayarlarını değiştirmez.

web.config dosyası etkin IIS modüllerini denetleyen ek IIS yapılandırma ayarları sağlayabilir. ASP.NET Core uygulamalarıyla istekleri işleyebilen IIS modülleri hakkında bilgi için IIS modülleri konusuna bakın.

web.config dosyasını oluşturma, dönüştürme ve yayımlama işlemleri proje yayımlandığında MSBuild hedefi (_TransformWebConfig) tarafından gerçekleştirilir. Bu hedef, Web SDK'sı hedefleri (Microsoft.NET.Sdk.Web) arasında yer alır. SDK, proje dosyasının üst kısmında ayarlanır:

<Project Sdk="Microsoft.NET.Sdk.Web">

Web SDK'sının web.config dosyasını dönüştürmesini önlemek için proje dosyasındaki <IsTransformWebConfigDisabled> özelliğini kullanın:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Web SDK'sının dosyayı dönüştürmesi devre dışı bırakıldığında processPath ve arguments geliştirici tarafından el ile ayarlanmalıdır. Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

ile ASP.NET Çekirdek Modülü yapılandırması web.config

ASP.NET Çekirdek Modülü, sitenin web.config dosyasındaki system.webServer düğümün bölümüyle aspNetCore yapılandırılır.

Aşağıdaki web.config dosya, çerçeveye bağımlı bir dağıtım için yayımlanır ve site isteklerini işlemek için ASP.NET Çekirdek Modülünü yapılandırılır:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Bağımsız dağıtım için aşağıdakiler web.config yayımlanır:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

InheritInChildApplications özelliği, öğesinde <location> belirtilen ayarların uygulamanın alt dizininde bulunan uygulamalar tarafından devralınmadığını belirtmek için ayarlanırfalse.

Bir uygulama Azure Uygulaması Hizmetine stdoutLogFiledağıtıldığında yol olarak \\?\%home%\LogFiles\stdoutayarlanır. Yol, stdout günlüklerini LogFiles hizmet tarafından otomatik olarak oluşturulan bir konum olan klasöre kaydeder.

IIS alt uygulama yapılandırması hakkında bilgi için bkz . Gelişmiş yapılandırma.

öğesinin aspNetCore öznitelikleri

Öznitelik Açıklama Varsayılan
arguments

İsteğe bağlı dize özniteliği.

içinde processPathbelirtilen yürütülebilir dosyanın bağımsız değişkenleri.

disableStartUpErrorPage

İsteğe bağlı Boole özniteliği.

True ise, 502.5 - İşlem Hatası sayfası gösterilmez ve içinde web.config yapılandırılan 502 durum kodu sayfası önceliklidir.

false
forwardWindowsAuthToken

İsteğe bağlı Boole özniteliği.

True ise belirteç, istek başına 'MS-ASPNETCORE-WINAUTHTOKEN' üst bilgisi olarak dinleyen %ASPNETCORE_PORT% alt işleme iletilir. İstek başına bu belirteçte CloseHandle çağrısı yapmak bu işlemin sorumluluğundadır.

true
hostingModel

İsteğe bağlı dize özniteliği.

Barındırma modelini işlem içi (InProcess/inprocess) veya işlem dışı (OutOfProcess/outofprocess) olarak belirtir.

OutOfProcess/outofprocess mevcut olmadığında
processesPerApplication

İsteğe bağlı tamsayı özniteliği.

Ayarda processPath belirtilen ve uygulama başına artırılabilen işlemin örneklerinin sayısını belirtir.

†İslem içi barındırma için değeri ile 1sınırlıdır.

Ayar processesPerApplication önerilmez. Bu öznitelik gelecek bir sürümde kaldırılacaktır.

Varsayılan: 1
Min: 1
Maksimum: 100
processPath

Gerekli dize özniteliği.

HTTP isteklerini dinleyen bir işlemi başlatan yürütülebilir dosyanın yolu. Göreli yollar desteklenir. Yol ile .başlıyorsa, yol site köküne göre olarak kabul edilir.

rapidFailsPerMinute

İsteğe bağlı tamsayı özniteliği.

içinde processPath belirtilen işlemin dakika başına kilitlenmesine izin verilen sayısını belirtir. Bu sınır aşılırsa modül, dakikanın geri kalanında işlemi başlatmayı durdurur.

İşlem içi barındırma ile desteklenmez.

Varsayılan: 10
Min: 0
Max: 100
requestTimeout

İsteğe bağlı zaman aralığı özniteliği.

ASP.NET Çekirdek Modülünün %ASPNETCORE_PORT% tarihinde dinleyen işlemden yanıt bekleme süresini belirtir.

ASP.NET Core 2.1 veya sonraki sürümleriyle birlikte gönderilen ASP.NET Core Modülü sürümlerinde, saat, requestTimeout dakika ve saniye cinsinden belirtilir.

İşlem içi barındırma için geçerli değildir. İşlem içi barındırma için modül, uygulamanın isteği işlemesini bekler.

Dizenin dakika ve saniye segmentleri için geçerli değerler 0-59 aralığındadır. 60 değerinin dakika veya saniye cinsinden kullanılması 500 - İç Sunucu Hatasına neden olur.

Varsayılan: 00:02:00
Min: 00:00:00
Max: 360:00:00
shutdownTimeLimit

İsteğe bağlı tamsayı özniteliği.

Dosya algılandığında app_offline.htm modülün yürütülebilir dosyanın düzgün bir şekilde kapatılmasını beklediği saniye cinsinden süre.

Varsayılan: 10
Min: 0
Max: 600
startupTimeLimit

İsteğe bağlı tamsayı özniteliği.

Modülün yürütülebilir dosyanın bağlantı noktasını dinleyen bir işlem başlatmasını beklediği saniye cinsinden süre. Bu süre sınırı aşılırsa modül işlemi sonlandıracaktır.

İşlem içinde barındırılırken: İşlem yeniden başlatılmaz ve ayarı kullanmaz rapidFailsPerMinute.

İşlem dışı barındırılırken: Modül, yeni bir istek aldığında işlemi yeniden başlatmayı dener ve uygulama son sıralı dakikada kaç kez başlatamadığı sürece sonraki gelen isteklerde işlemi yeniden başlatmayı rapidFailsPerMinute dener.

0 (sıfır) değeri sonsuz zaman aşımı olarak kabul edilmez .

Varsayılan: 120
Min: 0
Max: 3600
stdoutLogEnabled

İsteğe bağlı Boole özniteliği.

True stdout ise ve stderr içinde processPath belirtilen işlem için içinde stdoutLogFilebelirtilen dosyaya yönlendirilir.

false
stdoutLogFile

İsteğe bağlı dize özniteliği.

ve içinde belirtilen processPath işlemin günlüğe kaydedildiği stdout stderr göreli veya mutlak dosya yolunu belirtir. Göreli yollar, sitenin köküne göredir. ile . başlayan tüm yollar site köküne göredir ve diğer tüm yollar mutlak yollar olarak değerlendirilir. Yolda sağlanan tüm klasörler, günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Alt çizgi sınırlayıcıları kullanıldığında, yolun son kesimine stdoutLogFile bir zaman damgası, işlem kimliği ve dosya uzantısı (.log) eklenir. Değer olarak sağlanırsa .\logs\stdout , örnek bir stdout günlüğü 5 Şubat 2018 tarihinde 19:41:32'de 1934 işlem kimliğiyle kaydedildiğinde klasörüne kaydedilir stdout_20180205194132_1934.log logs .

aspnetcore-stdout

Ortam değişkenlerini belirleme

Öznitelikteki processPath işlem için ortam değişkenleri belirtilebilir. Bir koleksiyon öğesinin <environmentVariable> alt öğesiyle bir <environmentVariables> ortam değişkeni belirtin. Bu bölümde ayarlanan ortam değişkenleri, sistem ortam değişkenlerine göre önceliklidir.

Aşağıdaki örnek içinde web.configiki ortam değişkeni ayarlar. ASPNETCORE_ENVIRONMENT , uygulamanın ortamını olarak Developmentyapılandırıyor. Bir geliştirici, uygulama özel durumu hata ayıklaması yaparken Geliştirici Özel Durum Sayfası'nı yüklemeye zorlamak için dosyada web.config bu değeri geçici olarak ayarlayabilir. CONFIG_DIR , geliştiricinin uygulamanın yapılandırma dosyasını yüklemek için bir yol oluşturmak üzere başlangıçta değerini okuyan bir kod yazdığı kullanıcı tanımlı ortam değişkeni örneğidir.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

Not

Ortamı doğrudan içinde web.config ayarlamanın bir alternatifi, özelliği yayımlama profiline <EnvironmentName> (.pubxml) veya proje dosyasına eklemektir. Bu yaklaşım, proje yayımlandığında ortamını web.config ayarlar:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

Uyarı

Ortam değişkenini ASPNETCORE_ENVIRONMENT Development yalnızca İnternet gibi güvenilmeyen ağlar için erişilemeyen hazırlama ve test sunucularında olarak ayarlayın.

ILE IIS yapılandırması web.config

IIS yapılandırması, ASP.NET Core Modülü ile ASP.NET Core uygulamaları için işlevsel IIS senaryoları bölümünden web.config etkilenir<system.webServer>. Örneğin IIS yapılandırması dinamik sıkıştırma için kullanılabilir. IIS, sunucu düzeyinde dinamik sıkıştırma kullanacak şekilde yapılandırıldıysa, <urlCompression> uygulamanın web.config dosyasındaki öğe ASP.NET Core uygulaması için bunu devre dışı bırakabilir.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Yalıtılmış uygulama havuzlarında (IIS 10.0 veya üzeri için desteklenir) çalışan tek tek uygulamaların ortam değişkenlerini ayarlamak için, IIS başvuru belgelerindeki Ortam Değişkenleri <environmentVariables>konusunun komut bölümüne bakınAppCmd.exe.

Yapılandırma bölümleri: web.config

ASP.NET 4.x uygulamalarının web.config yapılandırma bölümleri, yapılandırma için ASP.NET Core uygulamaları tarafından kullanılmaz:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core uygulamaları diğer yapılandırma sağlayıcıları kullanılarak yapılandırılır. Daha fazla bilgi için bkz. Yapılandırma.

Web.config’i dönüştürme

Yayımlama sırasında web.config dosyasını dönüştürmeniz gerekirse Web.config'i dönüştürme konusuna bakın. Yapılandırmaya, profile veya ortama bağlı olarak ortam değişkenlerini ayarlamak için yayımlama sırasında web.config dosyasını dönüştürmeniz gerekebilir.

Ek kaynaklar