web.config dosyası

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 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 10 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 Module 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 web.config yolunda (tipik olarak uygulama temel yolu) dosyası mevcut olmalıdır. Bu, IIS'e sağlanan web sitesinin fiziksel yolu ile 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 Dosya eksikse, yanlış adlandırılmışsa veya siteyi normal başlangıç için yapılandıramıyorsa, IIS hassas dosyalara genel olarak hizmet verebilir.

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.

Dosya, web.config etkin IIS modüllerini kontrol eden 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 makalesine bakın.

MSBuild hedefi (_TransformWebConfig) proje yayımlandığında web.config dosyanın oluşturulmasını, dönüştürülmesini ve yayımlanmasını işler. 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'nin dosyayı dönüştürmesini devre dışı bıraktığında, geliştiricinin processPath ve arguments öğelerini el ile ayarlaması gerekir. 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 Core Modülü, sitenin web.config dosyasındaki system.webServer düğümünün aspNetCore bölümünde 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>

Aşağıdaki , bağımsız bir dağıtım için 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, <location> öğesi içindeki ayarların uygulamanın alt dizininde bulunan uygulamalar tarafından devralınmadığını belirtmek için false olarak ayarlanır.

Bir uygulama Azure Uygulama Hizmeti'ne dağıtıldığında, stdoutLogFile yolu \\?\%home%\LogFiles\stdout olarak ayarlanır. Yol, stdout günlüklerini hizmet tarafından otomatik olarak oluşturulan LogFiles klasörüne 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ç, isteğe bağlı olarak 'MS-ASPNETCORE-WINAUTHTOKEN' üst bilgisi olarak %ASPNETCORE_PORT% üzerinde dinleyen alt sürece 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.

†İşlem içi barındırma için değer 1 ile sınırlıdır.

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

Varsayılan: 1
Dak.: 1
Maksimum: 100
processPath

Gerekli metin ö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 relatif kabul edilir.

rapidFailsPerMinute

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

processPath içinde belirtilen işlemin bir dakika içinde kilitlenmesine izin verilen maksimum sayıyı 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
Dak.: 0
Max: 100
requestTimeout

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

ASP.NET Core Modülünün %ASPNETCORE_PORT% üzerinde 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
Dak.: 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 kibarca kapatılmasını beklediği süre, saniye cinsindedir.

Varsayılan: 10
Dak.: 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 süreç başlatmasını beklediği sürenin saniye cinsinden ifadesi. 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 rapidFailsPerMinute ayarı kullanılmaz.

İş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
Dak.: 0
Max: 3600
stdoutLogEnabled

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

Eğer doğruysa, processPath içinde belirtilen işlem için stdout ve stderr, stdoutLogFile belirtilen dosyaya yönlendirilir.

false
stdoutLogFile

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

processPath içinde belirtilen işlemin stdout ve stderr'ni günlüğe kaydettiği 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. Modül, günlük dosyası oluşturulduğunda yolda sağlanan klasörleri oluşturur. Alt çizgi sınırlayıcıları kullanıldığında, yolun son kesimine .log bir zaman damgası, işlem kimliği ve dosya uzantısı (stdoutLogFile) eklenir. Eğer .\logs\stdout bir değer olarak sağlanırsa, örnek bir stdout kaydı 5 Şubat 2018 tarihinde 19:41:32'de 1934 işlem kimliğiyle logs klasörüne stdout_20180205194132_1934.log olarak kaydedilir.

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 web.config yüklemeye zorlamak için dosyada 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 web.config içinde ayarlamaya bir alternatif, <EnvironmentName> özelliğini yayımlama profiline veya proje dosyasına eklemektir. Bu yaklaşım, proje yayımlandığında ortamını web.config ayarlar:

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

Uyarı

ASPNETCORE_ENVIRONMENT ortam değişkenini Development yalnızca İnternet gibi güvenilmeyen ağlar tarafından erişilemeyen hazırlık ve test sunucularında ayarlayın.

IIS'in yapılandırılması web.config

IIS yapılandırması, <system.webServer>web.config bölümündeki ayarlar, ASP.NET Core Modülü ile çalışan ASP.NET Core uygulamaları için işlevsel olan IIS senaryolarında etkilidir. Ö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 için aşağıdaki makalelere 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 AppCmd.exe makalesinin komut bölümüne bakın<environmentVariables>.

web.config yapılandırma bölümleri

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