IIS için ASP.NET Core Modülü (ANCM)

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.

ASP.NET Core Modülü (ANCM), IIS işlem hattına takılan ve ASP.NET Core uygulamalarının IIS ile çalışmasına olanak sağlayan yerel bir IIS modülüdür. IIS ile ASP.NET Core uygulamalarını aşağıdakilerden birini çalıştırabilirsiniz:

Barındırma modellerinin her biri arasında dengeler vardır. Varsayılan olarak, daha iyi performans ve tanılama nedeniyle işlem içi barındırma modeli kullanılır.

Daha fazla bilgi ve yapılandırma rehberliği için aşağıdaki konulara bakın:

ASP.NET Core Modülünü (ANCM) yükleme

ASP.NET Core Modülü (ANCM), .NET Core Barındırma Paketi'nden .NET Core Çalışma Zamanı ile birlikte yüklenir. ASP.NET Core Modülü, .NET'in destek içi sürümleriyle ileri ve geri uyumludur.

Hataya neden olan değişiklikler ve güvenlik önerileri Duyurular deposunda bildirilir. Etiket filtresi seçilerek duyurular belirli bir sürümle sınırlandırılabilir.

Aşağıdaki bağlantıyı kullanarak yükleyiciyi indirin:

Geçerli .NET Core Barındırma Paketi yükleyicisi (doğrudan indirme)

Modülün önceki bir sürümünü yükleme de dahil olmak üzere daha fazla bilgi için bkz . Barındırma Paketi.

ASP.NET Core uygulamasını IIS sunucusuna yayımlamaya yönelik bir öğretici deneyimi için bkz. ASP.NET Core uygulamasını IIS'ye yayımlama.

ASP.NET Çekirdek Modülü (ANCM), IIS işlem hattına takıp aşağıdakilerden birini yapmak için yerel bir IIS modülüdür:

Desteklenen Windows sürümleri:

  • Windows 7 veya üzeri
  • Windows Server 2012 R2 veya üzeri

İşlem içi barındırma sırasında, modül IIS için IIS HTTP Sunucusu (IISHttpServer) adlı bir işlem içi sunucu uygulaması kullanır.

İşlem dışı barındırma sırasında modül yalnızca ile Kestrelçalışır. Modül HTTP.sys ile çalışmaz.

Barındırma modelleri

İşlem içi barındırma modeli

ASP.NET Core uygulamaları varsayılan olarak işlem içi barındırma modelidir.

İşlemde barındırma sırasında aşağıdaki özellikler geçerlidir:

  • IIS HTTP Sunucusu (IISHttpServer), sunucu yerine Kestrel kullanılır. İşlem sırasında CreateDefaultBuilder şunu çağırır UseIIS :

    • öğesini IISHttpServerkaydedin.
    • ASP.NET Çekirdek Modülü arkasında çalışırken sunucunun dinlemesi gereken bağlantı noktasını ve temel yolu yapılandırın.
    • Başlangıç hatalarını yakalamak için konağı yapılandırın.
  • requestTimeout özniteliği işlem içi barındırma için geçerli değildir.

  • Uygulamalar arasında uygulama havuzu paylaşımı desteklenmez. Uygulama başına bir uygulama havuzu kullanın.

  • Web Dağıtımı kullanırken veya birapp_offline.htm dosyayı dağıtıma el ile yerleştirirken, açık bir bağlantı varsa uygulama hemen kapatılamayabilir. Örneğin, bir WebSocket bağlantısı uygulamanın kapatılmasını geciktirebilir.

  • Uygulamanın ve yüklü çalışma zamanının mimarisi (bitlik) (x64 veya x86) uygulama havuzunun mimarisiyle eşleşmelidir.

  • İstemci bağlantısı kesiliyor algılandı. İstemci HttpContext.RequestAborted bağlantısı kesildiğinde iptal belirteci iptal edilir.

  • ASP.NET Core 2.2.1 veya önceki sürümlerinde, GetCurrentDirectory uygulamanın dizini yerine IIS tarafından başlatılan işlemin çalışan dizinini döndürür (örneğin, C:\Windows\System32\inetsrv için w3wp.exe).

    Uygulamanın geçerli dizinini ayarlayan örnek kod için sınıfına CurrentDirectoryHelpersbakın. yöntemini çağırın SetCurrentDirectory . Uygulamanın dizinini sağlamak için GetCurrentDirectory sonraki çağrılar.

  • İşlem içinde barındırılırken, AuthenticateAsync bir kullanıcıyı başlatmak için dahili olarak çağrılmaz. Bu nedenle, her kimlik doğrulamasından sonra talepleri dönüştürmek için kullanılan bir IClaimsTransformation uygulama varsayılan olarak etkinleştirilmez. Talepleri bir IClaimsTransformation uygulamayla dönüştürürken, kimlik doğrulama hizmetleri eklemek için çağrısı AddAuthentication :

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
        services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseAuthentication();
    }
    

İşlem dışı barındırma modeli

Bir uygulamayı işlem dışı barındırma için yapılandırmak için, özelliğin <AspNetCoreHostingModel> OutOfProcess değerini proje dosyasında (.csproj):

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

İşlem içi barındırma, varsayılan değer olan ile InProcessayarlanır.

değeri <AspNetCoreHostingModel> büyük/küçük harfe duyarsız inprocess outofprocess olduğundan geçerli değerlerdir.

Kestrel sunucusu IIS HTTP Sunucusu (IISHttpServer yerine) kullanılır.

İşlem dışı için şu CreateDefaultBuilder çağrılar UseIISIntegration yapılır:

  • ASP.NET Çekirdek Modülü arkasında çalışırken sunucunun dinlemesi gereken bağlantı noktasını ve temel yolu yapılandırın.
  • Başlangıç hatalarını yakalamak için konağı yapılandırın.

Barındırma modeli değişiklikleri

hostingModel Ayar dosyada web.config değiştirilirse (Yapılandırma ile web.config bölümünde açıklanmıştır), modül IIS için çalışan işlemini geri döndürür.

IIS Express için modül çalışan işlemini geri dönüştürmez, bunun yerine geçerli IIS Express işleminin düzgün bir şekilde kapatılmasını tetikler. Uygulamaya yönelik bir sonraki istek yeni bir IIS Express işlemi oluşturur.

İşlem adı

Process.GetCurrentProcess().ProcessName raporlar w3wp/iisexpress (işlem içi) veya dotnet (işlem dışı).

Windows Kimlik Doğrulaması gibi birçok yerel modül etkin kalır. ASP.NET Çekirdek Modülü ile etkin IIS modülleri hakkında daha fazla bilgi edinmek için bkz . ASP.NET Core ile IIS modülleri.

ASP.NET Core Modülü şunları da yapabilir:

  • Çalışan işlemi için ortam değişkenlerini ayarlayın.
  • Başlatma sorunlarını gidermek için stdout çıkışını dosya depolamaya günlükleyin.
  • Windows kimlik doğrulama belirteçlerini iletme.

ASP.NET Çekirdek Modülünü (ANCM) yükleme ve kullanma

ASP.NET Core Modülünü yükleme yönergeleri için bkz . .NET Core Barındırma Paketini Yükleme. ASP.NET Core Modülü, .NET'in destek içi sürümleriyle ileri ve geri uyumludur.

Hataya neden olan değişiklikler ve güvenlik önerileri Duyurular deposunda bildirilir. Etiket filtresi seçilerek duyurular belirli bir sürümle sınırlandırılabilir.

web.config ile yapılandırma

ASP.NET Çekirdek Modülü, sitenin aspNetCore web.config dosyasındaki düğümün system.webServer bölümüyle 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 web.config, bağımsız 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, öğ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 . IIS ile Windows'ta Konak ASP.NET Çekirdeği.

aspNetCore öğesinin öznitelikleri

Öznitelik Açıklama Varsayılan
arguments

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

processPath'te belirtilen yürütülebilir dosyaya yönelik bağımsız değişkenler.

disableStartUpErrorPage

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

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

false
forwardWindowsAuthToken

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

True ise, belirteç istek başına üst bilgi 'MS-ASPNETCORE-WINAUTHTOKEN' olarak dinleme %ASPNETCORE_PORT% alt işlemine 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.

InProcess
inprocess
processesPerApplication

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

processPath ayarında belirtilen işlemin uygulama başına artırılabilen ö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.

processPath'te 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. Dakikalar veya saniyeler için değerde 60 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çi barındırma sırasında: İşlem yeniden başlatılmaz ve rapidFailsPerMinute ayarını kullanmaz .

İş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 rapidFailsPerMinute sayısını başlatamadığı sürece sonraki gelen isteklerde işlemi yeniden başlatmayı 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 ise, processPath'te belirtilen işlem için stdout ve stderr, stdoutLogFile içinde belirtilen dosyaya yönlendirilir.

false
stdoutLogFile

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

processPath'te belirtilen işlemden stdout ve stderr'ın günlüğe kaydedildiğ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. 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, stdoutLogFile yolunun son kesimine 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/2/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.

app_offline.htm

Bir uygulamanın kök dizininde adıyla app_offline.htm bir dosya algılanırsa, ASP.NET Çekirdek Modülü uygulamayı düzgün bir şekilde kapatmayı ve gelen istekleri işlemeyi durdurmayı dener. uygulama içinde shutdownTimeLimittanımlanan saniye sayısından sonra çalışmaya devam ediyorsa ASP.NET Çekirdek Modülü çalışan işlemi sonlandırıyor.

app_offline.htm Dosya mevcutken, ASP.NET Çekirdek Modülü dosyanın içeriğini app_offline.htm geri göndererek isteklere yanıt verir. app_offline.htm Dosya kaldırıldığında, sonraki istek uygulamayı başlatır.

İşlem dışı barındırma modeli kullanılırken, açık bir bağlantı varsa uygulama hemen kapatılamayabilir. Örneğin, bir WebSocket bağlantısı uygulamanın kapatılmasını geciktirebilir.

Başlangıç hata sayfası

Hem işlem içi hem de işlem dışı barındırma, uygulamayı başlatamadığında özel hata sayfaları oluşturur.

ASP.NET Çekirdek Modülü işlem içi veya işlem dışı istek işleyicisini bulamazsa, bir 500.0 - İşlem İçi/İşlem Dışı İşleyici Yük Hatası durum kodu sayfası görüntülenir.

ASP.NET Çekirdek Modülü uygulamayı başlatamıyorsa işlem içi barındırma için 500.30 - Başlatma Hatası durum kodu sayfası görüntülenir.

ASP.NET Çekirdek Modülü arka uç işlemini başlatamazsa veya arka uç işlemi başlatılırsa ancak yapılandırılan bağlantı noktasında dinlenemezse işlem dışı barındırma için 502.5 - İşlem Hatası durum kodu sayfası görüntülenir.

Bu sayfayı bastırmak ve varsayılan IIS 5xx durum kodu sayfasına dönmek için özniteliğini disableStartUpErrorPage kullanın. Özel hata iletilerini yapılandırma hakkında daha fazla bilgi için bkz. HTTP Hataları <httpErrors>.

Günlük oluşturma ve yeniden yönlendirme

ASP.NET Çekirdek Modülü, öğesinin ve öznitelikleri ayarlandıysa stdoutLogEnabled stdout ve stdoutLogFile stderr konsol çıkışını diske aspNetCore yönlendirir. Yoldaki stdoutLogFile tüm klasörler, günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yazma izni sağlamak için kullanın IIS AppPool\<app_pool_name> ).

İşlem geri dönüştürme/yeniden başlatma gerçekleşmediği sürece günlükler döndürülemez. Günlüklerin tükettiği disk alanını sınırlamak barındırıcının sorumluluğundadır.

stdout günlüğünün kullanılması yalnızca IIS'de barındırılırken veya Visual Studio ile IIS için geliştirme zamanı desteği kullanılırken uygulama başlatma sorunlarını gidermek için önerilir; yerel olarak hata ayıklarken ve uygulamayı IIS Express ile çalıştırırken değil.

Genel uygulama günlüğü amacıyla stdout günlüğünü kullanmayın. ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Günlük dosyası oluşturulduğunda zaman damgası ve dosya uzantısı otomatik olarak eklenir. Günlük dosyası adı, zaman damgası, işlem kimliği ve dosya uzantısı (.log) alt çizgilerle ayrılmış yolun son kesimine stdoutLogFile (genellikle stdout) eklenerek oluşturulur. stdoutLogFile Yol ile stdoutbitiyorsa, 5/2/2018 tarihinde 19:42:32'de oluşturulan 1934 PID'sine sahip bir uygulamanın günlüğü dosya adına stdout_20180205194132_1934.logsahiptir.

stdoutLogEnabled False ise, uygulama başlatma sırasında oluşan hatalar yakalanır ve olay günlüğüne 30 KB'a kadar yayılır. Başlatma işleminden sonra tüm ek günlükler atılır.

Aşağıdaki örnek aspNetCore öğesi, göreli yolda .\log\stdout günlüğünü yapılandırır. AppPool kullanıcısının identity sağlanan yola yazma izni olduğunu onaylayın.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Azure Uygulaması Hizmeti dağıtımı için bir uygulama yayımlarken, Web SDK değeri stdoutLogFile olarak \\?\%home%\LogFiles\stdoutayarlar. Ortam %home değişkeni, Azure Uygulaması Hizmeti tarafından barındırılan uygulamalar için önceden tanımlanmıştır.

Günlük filtresi kuralları oluşturmak için ASP.NET Core günlük kaydı belgelerinin Kodda günlük filtresi kurallarını uygulama bölümüne bakın.

Yol biçimleri hakkında daha fazla bilgi için bkz . Windows sistemlerinde dosya yolu biçimleri.

Gelişmiş tanılama günlükleri

ASP.NET Çekirdek Modülü, gelişmiş tanılama günlükleri sağlamak için yapılandırılabilir. <handlerSettings> öğesini öğesinde <aspNetCore> web.configöğesine ekleyin. ayarıTRACE, debugLevel tanılama bilgilerinin daha yüksek aslına uygun olmasını sağlar:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Yoldaki tüm klasörler (logs yukarıdaki örnekte) günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun, günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yazma izni sağlamak için yer tutucunun {APP POOL NAME} uygulama havuzu adı olduğu öğesini kullanınIIS AppPool\{APP POOL NAME}).

Hata ayıklama düzeyi (debugLevel) değerleri hem düzeyi hem de konumu içerebilir.

Düzeyler (en azdan en ayrıntılı düzeye sırasıyla):

  • HATA
  • UYARI
  • INFO
  • TRACE

Konumlar (birden çok konuma izin verilir):

  • KONSOL
  • EVENTLOG
  • DOSYA

İşleyici ayarları ortam değişkenleri aracılığıyla da sağlanabilir:

  • ASPNETCORE_MODULE_DEBUG_FILE: Hata ayıklama günlük dosyasının yolu. (Varsayılan: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Hata ayıklama düzeyi ayarı.

Uyarı

Bir sorunu gidermek için hata ayıklama günlüğünü dağıtımda gerekenden daha uzun süre etkin bırakmayın. Günlüğün boyutu sınırlı değildir. Hata ayıklama günlüğünün etkin durumda bırakılması, kullanılabilir disk alanını tüketebilir ve sunucu veya uygulama hizmetini kilitleyebilir.

Dosyadaki web.config öğenin bir örneği aspNetCore için bkz. Web.config ile yapılandırma.

Yığın boyutunu değiştirme

Yalnızca işlem içi barındırma modeli kullanılırken geçerlidir.

içindeki bayt web.configcinsinden ayarını kullanarak stackSize yönetilen yığın boyutunu yapılandırın. Varsayılan boyut 1.048.576 bayttır (1 MB).

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="stackSize" value="2097152" />
  </handlerSettings>
</aspNetCore>

Ara sunucu yapılandırması HTTP protokol ve eşleştirme belirteci kullanır

Yalnızca işlem dışı barındırma için geçerlidir.

ASP.NET Çekirdek Modülü arasında oluşturulan ve Kestrel HTTP protokolünü kullanan ara sunucu. Modül Kestrel ile sunucunun dışında bir konumdan gelen trafiği dinleme riski yoktur.

bir eşleştirme belirteci, tarafından Kestrel alınan isteklerin IIS tarafından proksied olduğunu ve başka bir kaynaktan gelmediğini garanti etmek için kullanılır. Eşleştirme belirteci oluşturulur ve modül tarafından bir ortam değişkenine (ASPNETCORE_TOKEN) ayarlanır. Eşleştirme belirteci de her prxied isteğinde bir üst bilgi (MS-ASPNETCORE-TOKEN) olarak ayarlanır. IIS Ara Yazılımı, aldığı her isteği denetlediğinden, eşleştirme belirteci üst bilgisi değerinin ortam değişkeni değeriyle eşleşdiğini onaylar. Belirteç değerleri eşleşmezse istek günlüğe kaydedilir ve reddedilir. Eşleştirme belirteci ortam değişkeni ve modül Kestrel arasındaki trafiğe sunucunun kapalı bir konumundan erişilemez. Eşleştirme belirteci değerini bilmeden, bir siber saldırı aracı IIS Ara Yazılımı'nda denetimi atlayan istekler gönderemez.

IIS Paylaşılan Yapılandırması ile ASP.NET Çekirdek Modülü

ASP.NET Çekirdek Modülü yükleyicisi, TrustedInstaller hesabının ayrıcalıklarıyla çalışır. Yerel sistem hesabının IIS Paylaşılan Yapılandırması tarafından kullanılan paylaşım yolu için değiştirme izni olmadığından, paylaşımdaki dosyada applicationHost.config modül ayarlarını yapılandırmaya çalışırken yükleyici erişim reddedildi hatası oluşturur.

IIS yüklemesiyle aynı makinede IIS Paylaşılan Yapılandırması kullanırken, parametresi olarak ayarlanmış 1ASP.NET Core Barındırma Paketi yükleyicisini OPT_NO_SHARED_CONFIG_CHECK çalıştırın:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

Paylaşılan yapılandırmanın yolu IIS yüklemesi ile aynı makinede değilse şu adımları izleyin:

  1. IIS Paylaşılan Yapılandırmasını devre dışı bırakın.
  2. Yükleyiciyi çalıştırın.
  3. Güncelleştirilmiş applicationHost.config dosyayı paylaşıma aktarın.
  4. IIS Paylaşılan Yapılandırmasını yeniden etkinleştirin.

Modül sürümü ve Barındırma Paketi yükleyici günlükleri

Yüklü ASP.NET Çekirdek Modülünün sürümünü belirlemek için:

  1. Barındırma sisteminde adresine %windir%\System32\inetsrvgidin.
  2. aspnetcore.dll Dosyayı bulun.
  3. Dosyaya sağ tıklayın ve bağlam menüsünden Özellikler'i seçin.
  4. Ayrıntılar sekmesini seçin. Dosya sürümü ve Ürün sürümü, modülün yüklü sürümünü temsil edilir.

Modülün Barındırma Paketi yükleyici günlükleri adresinde C:\Users\%UserName%\AppData\Local\Tempbulunur. Dosya olarak adlandırılır dd_DotNetCoreWinSvrHosting__{TIMESTAMP}_000_AspNetCoreModule_x64.log.

Modül, şema ve yapılandırma dosyası konumları

Modül

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

Şema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

Yapılandırma

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI:%USERPROFILE%\Documents\IISExpress\config\applicationhost.config

Dosyaları dosyada applicationHost.config arayarak aspnetcore bulabilirsiniz.

ASP.NET Çekirdek Modülü (ANCM), IIS işlem hattına takıp aşağıdakilerden birini yapmak için yerel bir IIS modülüdür:

Desteklenen Windows sürümleri:

  • Windows 7 veya üzeri
  • Windows Server 2008 R2 veya üzeri

İşlem içi barındırma sırasında, modül IIS için IIS HTTP Sunucusu (IISHttpServer) adlı bir işlem içi sunucu uygulaması kullanır.

İşlem dışı barındırma sırasında modül yalnızca ile Kestrelçalışır. Modül HTTP.sys ile çalışmaz.

Barındırma modelleri

İşlem içi barındırma modeli

Bir uygulamayı işlem içi barındırma için yapılandırmak için özelliğini uygulamanın proje dosyasına değeriyle InProcess ekleyin <AspNetCoreHostingModel> (işlem dışı barındırma ile OutOfProcessayarlanır):

<PropertyGroup>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

.NET Framework'ASP.NET Core uygulamaları için işlem içi barındırma modeli desteklenmez.

değeri <AspNetCoreHostingModel> büyük/küçük harfe duyarsız inprocess outofprocess olduğundan geçerli değerlerdir.

<AspNetCoreHostingModel> Özelliği dosyada yoksa, varsayılan değer olurOutOfProcess.

İşlemde barındırma sırasında aşağıdaki özellikler geçerlidir:

  • IIS HTTP Sunucusu (IISHttpServer), sunucu yerine Kestrel kullanılır. İşlem sırasında CreateDefaultBuilder şunu çağırır UseIIS :

    • öğesini IISHttpServerkaydedin.
    • ASP.NET Çekirdek Modülü arkasında çalışırken sunucunun dinlemesi gereken bağlantı noktasını ve temel yolu yapılandırın.
    • Başlangıç hatalarını yakalamak için konağı yapılandırın.
  • requestTimeout özniteliği işlem içi barındırma için geçerli değildir.

  • Uygulamalar arasında uygulama havuzu paylaşımı desteklenmez. Uygulama başına bir uygulama havuzu kullanın.

  • Web Dağıtımı kullanırken veya dağıtıma bir app_offline.htm dosyasını el ile yerleştirirken, açık bir bağlantı varsa uygulama hemen kapatılamayabilir. Örneğin, bir websocket bağlantısı uygulamanın kapatılmasını geciktirebilir.

  • Uygulamanın ve yüklü çalışma zamanının mimarisi (bitlik) (x64 veya x86) uygulama havuzunun mimarisiyle eşleşmelidir.

  • İstemci bağlantısı kesiliyor algılandı. İstemci bağlantısı kesildiğinde HttpContext.RequestAborted iptal belirteci iptal edilir.

  • ASP.NET Core 2.2.1 veya önceki sürümlerinde, GetCurrentDirectory uygulamanın dizini yerine IIS tarafından başlatılan işlemin çalışan dizinini döndürür (örneğin, w3wp.exe için C:\Windows\System32\inetsrv).

    Uygulamanın geçerli dizinini ayarlayan örnek kod için bkz . CurrentDirectoryHelpers sınıfı. yöntemini çağırın SetCurrentDirectory . Uygulamanın dizinini sağlamak için GetCurrentDirectory sonraki çağrılar.

  • İşlem içinde barındırılırken, AuthenticateAsync bir kullanıcıyı başlatmak için dahili olarak çağrılmaz. Bu nedenle, her kimlik doğrulamasından sonra talepleri dönüştürmek için kullanılan bir IClaimsTransformation uygulama varsayılan olarak etkinleştirilmez. Talepleri bir IClaimsTransformation uygulamayla dönüştürürken, kimlik doğrulama hizmetleri eklemek için çağrısı AddAuthentication :

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
        services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseAuthentication();
    }
    

İşlem dışı barındırma modeli

Bir uygulamayı işlem dışı barındırma için yapılandırmak için proje dosyasında aşağıdaki yaklaşımlardan birini kullanın:

  • özelliğini belirtmeyin <AspNetCoreHostingModel> . <AspNetCoreHostingModel> Özelliği dosyada yoksa, varsayılan değer olurOutOfProcess.
  • özelliğinin <AspNetCoreHostingModel> OutOfProcess değerini olarak ayarlayın (işlem içi barındırma ile InProcessayarlanır):
<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

Değer büyük/küçük harfe duyarsız inprocess outofprocess olduğundan geçerli değerlerdir.

Kestrel sunucusu IIS HTTP Sunucusu (IISHttpServer yerine) kullanılır.

İşlem dışı için CreateDefaultBuilder şunu çağırırUseIISIntegration:

  • ASP.NET Çekirdek Modülü arkasında çalışırken sunucunun dinlemesi gereken bağlantı noktasını ve temel yolu yapılandırın.
  • Başlangıç hatalarını yakalamak için konağı yapılandırın.

Barındırma modeli değişiklikleri

hostingModel Ayar web.config dosyasında değiştirilirse (web.config ile yapılandırma bölümünde açıklanmıştır), modül IIS için çalışan işlemini geri döndürür.

IIS Express için modül çalışan işlemini geri dönüştürmez, bunun yerine geçerli IIS Express işleminin düzgün bir şekilde kapatılmasını tetikler. Uygulamaya yönelik bir sonraki istek yeni bir IIS Express işlemi oluşturur.

İşlem adı

Process.GetCurrentProcess().ProcessName raporlar w3wp/iisexpress (işlem içi) veya dotnet (işlem dışı).

Windows Kimlik Doğrulaması gibi birçok yerel modül etkin kalır. ASP.NET Çekirdek Modülü ile etkin IIS modülleri hakkında daha fazla bilgi edinmek için bkz . ASP.NET Core ile IIS modülleri.

ASP.NET Core Modülü şunları da yapabilir:

  • Çalışan işlemi için ortam değişkenlerini ayarlayın.
  • Başlatma sorunlarını gidermek için stdout çıkışını dosya depolamaya günlükleyin.
  • Windows kimlik doğrulama belirteçlerini iletme.

ASP.NET Çekirdek Modülünü (ANCM) yükleme ve kullanma

ASP.NET Core Modülünü yükleme yönergeleri için bkz . .NET Core Barındırma Paketini Yükleme. ASP.NET Core Modülü, .NET'in destek içi sürümleriyle ileri ve geri uyumludur.

Hataya neden olan değişiklikler ve güvenlik önerileri Duyurular deposunda bildirilir. Etiket filtresi seçilerek duyurular belirli bir sürümle sınırlandırılabilir.

web.config ile yapılandırma

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

Aşağıdaki web.config dosyası, ç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 web.config, bağımsız 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> öğesinde <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 hizmet tarafından otomatik olarak oluşturulan bir konum olan LogFiles klasörüne kaydeder.

IIS alt uygulama yapılandırması hakkında bilgi için bkz . IIS ile Windows'ta Konak ASP.NET Çekirdeği.

aspNetCore öğesinin ö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 web.config dosyasında yapılandırılan 502 durum kodu sayfası önceliklidir.

false
forwardWindowsAuthToken

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

Doğruysa, belirteç %ASPNETCORE_PORT% üzerinde istek başına 'MS-ASPNETCORE-WINAUTHTOKEN' üst bilgisi olarak dinleyen 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
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. Dakikalar veya saniyeler için değerde 60 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 ise, içinde belirtilen processPath işlem için stdout ve stderr, stdoutLogFile içinde belirtilen 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/2/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 ayarlama

Ö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 iki ortam değişkenini 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.

app_offline.htm

Bir uygulamanın kök dizininde adıyla app_offline.htm bir dosya algılanırsa, ASP.NET Çekirdek Modülü uygulamayı düzgün bir şekilde kapatmayı ve gelen istekleri işlemeyi durdurmayı dener. uygulama içinde shutdownTimeLimittanımlanan saniye sayısından sonra çalışmaya devam ediyorsa ASP.NET Çekirdek Modülü çalışan işlemi sonlandırıyor.

app_offline.htm Dosya mevcutken, ASP.NET Çekirdek Modülü dosyanın içeriğini app_offline.htm geri göndererek isteklere yanıt verir. app_offline.htm Dosya kaldırıldığında, sonraki istek uygulamayı başlatır.

İşlem dışı barındırma modeli kullanılırken, açık bir bağlantı varsa uygulama hemen kapatılamayabilir. Örneğin, bir websocket bağlantısı uygulamanın kapatılmasını geciktirebilir.

Başlangıç hata sayfası

Hem işlem içi hem de işlem dışı barındırma, uygulamayı başlatamadığında özel hata sayfaları oluşturur.

ASP.NET Çekirdek Modülü işlem içi veya işlem dışı istek işleyicisini bulamazsa, bir 500.0 - İşlem İçi/İşlem Dışı İşleyici Yük Hatası durum kodu sayfası görüntülenir.

ASP.NET Çekirdek Modülü uygulamayı başlatamıyorsa işlem içi barındırma için 500.30 - Başlatma Hatası durum kodu sayfası görüntülenir.

ASP.NET Çekirdek Modülü arka uç işlemini başlatamazsa veya arka uç işlemi başlatılırsa ancak yapılandırılan bağlantı noktasında dinlenemezse işlem dışı barındırma için 502.5 - İşlem Hatası durum kodu sayfası görüntülenir.

Bu sayfayı bastırmak ve varsayılan IIS 5xx durum kodu sayfasına dönmek için özniteliğini disableStartUpErrorPage kullanın. Özel hata iletilerini yapılandırma hakkında daha fazla bilgi için bkz . HTTP Hataları <httpErrors>.

Günlük oluşturma ve yeniden yönlendirme

ASP.NET Çekirdek Modülü, öğesinin ve öznitelikleri ayarlandıysa stdoutLogEnabled stdout ve stdoutLogFile stderr konsol çıkışını diske aspNetCore yönlendirir. Yoldaki stdoutLogFile tüm klasörler, günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yer tutucunun {APP POOL NAME} uygulama havuzu adı olduğu yazma izni sağlamak için kullanınIIS AppPool\{APP POOL NAME}).

İşlem geri dönüştürme/yeniden başlatma gerçekleşmediği sürece günlükler döndürülemez. Günlüklerin tükettiği disk alanını sınırlamak barındırıcının sorumluluğundadır.

stdout günlüğünün kullanılması yalnızca IIS'de barındırılırken veya Visual Studio ile IIS için geliştirme zamanı desteği kullanılırken uygulama başlatma sorunlarını gidermek için önerilir; yerel olarak hata ayıklarken ve uygulamayı IIS Express ile çalıştırırken değil.

Genel uygulama günlüğü amacıyla stdout günlüğünü kullanmayın. ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Günlük dosyası oluşturulduğunda zaman damgası ve dosya uzantısı otomatik olarak eklenir. Günlük dosyası adı, zaman damgası, işlem kimliği ve dosya uzantısı (.log) alt çizgilerle ayrılmış yolun son kesimine stdoutLogFile (genellikle stdout) eklenerek oluşturulur. stdoutLogFile Yol ile stdoutbitiyorsa, 5/2/2018 tarihinde 19:42:32'de oluşturulan 1934 PID'sine sahip bir uygulamanın günlüğü dosya adına stdout_20180205194132_1934.logsahiptir.

stdoutLogEnabled False ise, uygulama başlatma sırasında oluşan hatalar yakalanır ve olay günlüğüne 30 KB'a kadar yayılır. Başlatma işleminden sonra tüm ek günlükler atılır.

Aşağıdaki örnek aspNetCore öğesi, göreli yolda .\log\stdout günlüğünü yapılandırır. Uygulama havuzu kullanıcısının identity sağlanan yola yazma izni olduğunu onaylayın.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Azure Uygulaması Hizmeti dağıtımı için bir uygulama yayımlarken, Web SDK değeri stdoutLogFile olarak \\?\%home%\LogFiles\stdoutayarlar. Ortam %home değişkeni, Azure Uygulaması Hizmeti tarafından barındırılan uygulamalar için önceden tanımlanmıştır.

Yol biçimleri hakkında daha fazla bilgi için bkz . Windows sistemlerinde dosya yolu biçimleri.

Gelişmiş tanılama günlükleri

ASP.NET Çekirdek Modülü, gelişmiş tanılama günlükleri sağlamak için yapılandırılabilir. <handlerSettings> öğesini öğesinde <aspNetCore> web.configöğesine ekleyin. ayarıTRACE, debugLevel tanılama bilgilerinin daha yüksek aslına uygun olmasını sağlar:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Değere <handlerSetting> sağlanan yoldaki klasörler (logs önceki örnekte) modül tarafından otomatik olarak oluşturulmaz ve dağıtımda önceden mevcut olmalıdır. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yer tutucunun {APP POOL NAME} uygulama havuzu adı olduğu yazma izni sağlamak için kullanınIIS AppPool\{APP POOL NAME}).

Hata ayıklama düzeyi (debugLevel) değerleri hem düzeyi hem de konumu içerebilir.

Düzeyler (en azdan en ayrıntılı düzeye sırasıyla):

  • HATA
  • UYARI
  • INFO
  • TRACE

Konumlar (birden çok konuma izin verilir):

  • KONSOL
  • EVENTLOG
  • DOSYA

İşleyici ayarları ortam değişkenleri aracılığıyla da sağlanabilir:

  • ASPNETCORE_MODULE_DEBUG_FILE: Hata ayıklama günlük dosyasının yolu. (Varsayılan: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Hata ayıklama düzeyi ayarı.

Uyarı

Bir sorunu gidermek için hata ayıklama günlüğünü dağıtımda gerekenden daha uzun süre etkin bırakmayın. Günlüğün boyutu sınırlı değildir. Hata ayıklama günlüğünün etkin durumda bırakılması, kullanılabilir disk alanını tüketebilir ve sunucu veya uygulama hizmetini kilitleyebilir.

Dosyadaki web.config öğenin bir örneği aspNetCore için bkz. Web.config ile yapılandırma.

Ara sunucu yapılandırması HTTP protokol ve eşleştirme belirteci kullanır

Yalnızca işlem dışı barındırma için geçerlidir.

ASP.NET Çekirdek Modülü arasında oluşturulan ve Kestrel HTTP protokolünü kullanan ara sunucu. Modül Kestrel ile sunucunun dışında bir konumdan gelen trafiği dinleme riski yoktur.

bir eşleştirme belirteci, tarafından Kestrel alınan isteklerin IIS tarafından proksied olduğunu ve başka bir kaynaktan gelmediğini garanti etmek için kullanılır. Eşleştirme belirteci oluşturulur ve modül tarafından bir ortam değişkenine (ASPNETCORE_TOKEN) ayarlanır. Eşleştirme belirteci de her prxied isteğinde bir üst bilgi (MS-ASPNETCORE-TOKEN) olarak ayarlanır. IIS Ara Yazılımı, aldığı her isteği denetlediğinden, eşleştirme belirteci üst bilgisi değerinin ortam değişkeni değeriyle eşleşdiğini onaylar. Belirteç değerleri eşleşmezse istek günlüğe kaydedilir ve reddedilir. Eşleştirme belirteci ortam değişkeni ve modül Kestrel arasındaki trafiğe sunucunun kapalı bir konumundan erişilemez. Eşleştirme belirteci değerini bilmeden, bir siber saldırı aracı IIS Ara Yazılımı'nda denetimi atlayan istekler gönderemez.

IIS Paylaşılan Yapılandırması ile ASP.NET Çekirdek Modülü

ASP.NET Çekirdek Modülü yükleyicisi TrustedInstaller hesabın ayrıcalıklarıyla çalışır. Yerel sistem hesabının IIS Paylaşılan Yapılandırması tarafından kullanılan paylaşım yolu için değiştirme izni olmadığından, paylaşımdaki dosyada applicationHost.config modül ayarlarını yapılandırmaya çalışırken yükleyici erişim reddedildi hatası oluşturur.

IIS yüklemesiyle aynı makinede IIS Paylaşılan Yapılandırması kullanırken, parametresi olarak ayarlanmış 1ASP.NET Core Barındırma Paketi yükleyicisini OPT_NO_SHARED_CONFIG_CHECK çalıştırın:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

Paylaşılan yapılandırmanın yolu IIS yüklemesi ile aynı makinede değilse şu adımları izleyin:

  1. IIS Paylaşılan Yapılandırmasını devre dışı bırakın.
  2. Yükleyiciyi çalıştırın.
  3. Güncelleştirilmiş applicationHost.config dosyayı paylaşıma aktarın.
  4. IIS Paylaşılan Yapılandırmasını yeniden etkinleştirin.

Modül sürümü ve Barındırma Paketi yükleyici günlükleri

Yüklü ASP.NET Çekirdek Modülünün sürümünü belirlemek için:

  1. Barındırma sisteminde adresine %windir%\System32\inetsrvgidin.
  2. aspnetcore.dll Dosyayı bulun.
  3. Dosyaya sağ tıklayın ve bağlam menüsünden Özellikler'i seçin.
  4. Ayrıntılar sekmesini seçin. Dosya sürümü ve Ürün sürümü, modülün yüklü sürümünü temsil edilir.

Modülün Barındırma Paketi yükleyici günlükleri adresinde C:\\Users\\%UserName%\\AppData\\Local\\Tempbulunur. Dosya, yer tutucunun {TIMESTAMP} zaman damgası olduğu adlı dd_DotNetCoreWinSvrHosting__\{TIMESTAMP}_000_AspNetCoreModule_x64.logdosyadır.

Modül, şema ve yapılandırma dosyası konumları

Modül

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

Şema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

Yapılandırma

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI:%USERPROFILE%\Documents\IISExpress\config\applicationhost.config

Dosyaları dosyada applicationHost.config arayarak aspnetcore bulabilirsiniz.

ASP.NET Çekirdek Modülü (ANCM), web isteklerini arka uç ASP.NET Core uygulamalarına iletmek için IIS işlem hattına takılan yerel bir IIS modülüdür.

Desteklenen Windows sürümleri:

  • Windows 7 veya üzeri
  • Windows Server 2008 R2 veya üzeri

Modül yalnızca ile Kestrelçalışır. Modül HTTP.sys ile uyumlu değil.

ASP.NET Core uygulamaları IIS çalışan işleminden ayrı bir işlemde çalıştığından, modül işlem yönetimini de işler. Modül, ilk istek geldiğinde ASP.NET Core uygulaması için işlemi başlatır ve kilitlenmesi durumunda uygulamayı yeniden başlatır. Bu temelde, Windows İşlem Etkinleştirme Hizmeti (WAS) tarafından yönetilen IIS'de işlem halinde çalışan ASP.NET 4.x uygulamalarında görülen davranışla aynıdır.

Aşağıdaki diyagramda IIS, ASP.NET Çekirdek Modülü ve bir uygulama arasındaki ilişki gösterilmektedir:

ASP.NET Core Modülü

Web'den çekirdek modundaki HTTP.sys sürücüsüne istekler gelir. Sürücü istekleri web sitesinin yapılandırılmış bağlantı noktası üzerinden (genellikle 80 (HTTP) veya 443 (HTTPS)) IIS'ye yönlendirir. Modül istekleri uygulama için 80 veya 443 olmayan rastgele bir bağlantı noktası üzerinden Kestrel'e iletir.

Modül bağlantı noktasını başlatma sırasında bir ortam değişkeni aracılığıyla belirtir ve IIS Tümleştirme Ara Yazılımı sunucuyu http://localhost:{port} üzerinden dinleyecek şekilde yapılandırır. Ek denetimler gerçekleştirilir ve modülden kaynaklanmayan istekler reddedilir. Modül HTTPS iletmeyi desteklemez, dolayısıyla IIS tarafından HTTPS üzerinden alınan istekler bile HTTP üzerinden iletilir.

Kestrel isteği modülden aldıktan sonra, istek ASP.NET Core ara yazılım işlem hattına gönderilir. Ara yazılım işlem hattı isteği işler ve bir HttpContext örneği olarak uygulamanın mantığına geçirir. IIS Tümleştirmesi tarafından eklenen ara yazılım, isteği Kestrel'e iletme işlemini gerçekleştirmek için şemayı, uzak IP'yi ve yol tabanını güncelleştirir. Uygulamanın yanıtı IIS'ye geri geçirilir ve IIS de bunu geriye, isteği başlatan HTTP istemcisine gönderir.

Windows Kimlik Doğrulaması gibi birçok yerel modül etkin kalır. ASP.NET Çekirdek Modülü ile etkin IIS modülleri hakkında daha fazla bilgi edinmek için bkz . ASP.NET Core ile IIS modülleri.

ASP.NET Core Modülü şunları da yapabilir:

  • Çalışan işlemi için ortam değişkenlerini ayarlayın.
  • Başlatma sorunlarını gidermek için stdout çıkışını dosya depolamaya günlükleyin.
  • Windows kimlik doğrulama belirteçlerini iletme.

ASP.NET Çekirdek Modülünü (ANCM) yükleme ve kullanma

ASP.NET Core Modülünü yükleme yönergeleri için bkz . .NET Core Barındırma Paketini Yükleme.

web.config ile yapılandırma

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

Aşağıdaki web.config dosyası, ç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>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet"
                arguments=".\MyApp.dll"
                stdoutLogEnabled="false"
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Aşağıdaki web.config, bağımsız dağıtım için yayımlanır:

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

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

IIS alt uygulama yapılandırması hakkında bilgi için bkz . IIS ile Windows'ta Konak ASP.NET Çekirdeği.

aspNetCore öğesinin öznitelikleri

Öznitelik Açıklama Varsayılan
arguments

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

processPath'te belirtilen yürütülebilir dosyaya yönelik bağımsız değişkenler.

disableStartUpErrorPage

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

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

false
forwardWindowsAuthToken

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

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

true
processesPerApplication

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

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

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

Varsayılan: 1
Min: 1
Max: 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.

processPath'te 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.

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.

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. Modül, yeni bir istek aldığında işlemi yeniden başlatmayı dener ve uygulama son sıralı dakika içinde rapidFailsPerMinute sayısını başlatamadığı sürece sonraki gelen isteklerde işlemi yeniden başlatmaya çalışır.

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 ise, processPath'te belirtilen işlem için stdout ve stderr, stdoutLogFile içinde belirtilen dosyaya yönlendirilir.

false
stdoutLogFile

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

processPath'te belirtilen işlemden stdout ve stderr'ın günlüğe kaydedildiğ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ün günlük dosyasını oluşturabilmesi için yolda sağlanan tüm klasörlerin mevcut olması gerekir. Alt çizgi sınırlayıcıları kullanıldığında, stdoutLogFile yolunun son kesimine 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/2/2018 tarihinde 19:41:32'de 1934 işlem kimliğiyle kaydedildiğinde günlükler klasörüne stdout_20180205194132_1934.log olarak kaydedilir.

aspnetcore-stdout

Ortam değişkenlerini ayarlama

Öznitelikteki processPath işlem için ortam değişkenleri belirtilebilir. Bir koleksiyon öğesinin <environmentVariable> alt öğesiyle bir <environmentVariables> ortam değişkeni belirtin.

Uyarı

Bu bölümde ayarlanan ortam değişkenleri, aynı ada sahip sistem ortam değişkenleriyle çakışıyor. Ortam değişkeni hem web.config dosyasında hem de Windows'daki sistem düzeyinde ayarlanırsa, web.config dosyasındaki değer sistem ortamı değişken değerine (örneğin, ASPNETCORE_ENVIRONMENT: Development;Development) eklenir ve bu da uygulamanın başlatılmasını engeller.

Aşağıdaki örnek iki ortam değişkenini ayarlar. ASPNETCORE_ENVIRONMENT , uygulamanın ortamını olarak Developmentyapılandırıyor. Geliştirici, bir uygulama özel durumu hata ayıklarken Geliştirici Özel Durum Sayfası'nı yüklemeye zorlamak için web.config dosyasında 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="\\?\%home%\LogFiles\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

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.

app_offline.htm

Bir uygulamanın kök dizininde adıyla app_offline.htm bir dosya algılanırsa, ASP.NET Çekirdek Modülü uygulamayı düzgün bir şekilde kapatmayı ve gelen istekleri işlemeyi durdurmayı dener. uygulama içinde shutdownTimeLimittanımlanan saniye sayısından sonra çalışmaya devam ediyorsa ASP.NET Çekirdek Modülü çalışan işlemi sonlandırıyor.

app_offline.htm Dosya mevcutken, ASP.NET Çekirdek Modülü dosyanın içeriğini app_offline.htm geri göndererek isteklere yanıt verir. app_offline.htm Dosya kaldırıldığında, sonraki istek uygulamayı başlatır.

Başlangıç hata sayfası

ASP.NET Çekirdek Modülü arka uç işlemini başlatamazsa veya arka uç işlemi başlatılır ancak yapılandırılan bağlantı noktasında dinlenemezse, 502.5 - İşlem Hatası durum kodu sayfası görüntülenir. Bu sayfayı engellemek ve varsayılan IIS 502 durum kodu sayfasına dönmek için özniteliğini disableStartUpErrorPage kullanın. Özel hata iletilerini yapılandırma hakkında daha fazla bilgi için bkz . HTTP Hataları <httpErrors>.

Günlük oluşturma ve yeniden yönlendirme

ASP.NET Çekirdek Modülü, öğesinin ve öznitelikleri ayarlandıysa stdoutLogEnabled stdout ve stdoutLogFile stderr konsol çıkışını diske aspNetCore yönlendirir. Yoldaki stdoutLogFile tüm klasörler, günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yazma izni sağlamak için kullanın IIS AppPool\<app_pool_name> ).

İşlem geri dönüştürme/yeniden başlatma gerçekleşmediği sürece günlükler döndürülemez. Günlüklerin tükettiği disk alanını sınırlamak barındırıcının sorumluluğundadır.

stdout günlüğünün kullanılması yalnızca IIS'de barındırılırken veya Visual Studio ile IIS için geliştirme zamanı desteği kullanılırken uygulama başlatma sorunlarını gidermek için önerilir; yerel olarak hata ayıklarken ve uygulamayı IIS Express ile çalıştırırken değil.

Genel uygulama günlüğü amacıyla stdout günlüğünü kullanmayın. ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Günlük dosyası oluşturulduğunda zaman damgası ve dosya uzantısı otomatik olarak eklenir. Günlük dosyası adı, zaman damgası, işlem kimliği ve dosya uzantısı (.log) alt çizgilerle ayrılmış yolun son kesimine stdoutLogFile (genellikle stdout) eklenerek oluşturulur. stdoutLogFile Yol stdout ile biterse, 5/2/2018 tarihinde 19:42:32'de 19:42:32'de oluşturulan 1934 PID'sine sahip bir uygulamanın günlüğü stdout_20180205194132_1934.log dosya adına sahiptir.

Aşağıdaki örnek aspNetCore öğesi, göreli yolda .\log\stdout günlüğünü yapılandırır. AppPool kullanıcısının identity sağlanan yola yazma izni olduğunu onaylayın.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout">
</aspNetCore>

Azure Uygulaması Hizmeti dağıtımı için bir uygulama yayımlarken, Web SDK değeri stdoutLogFile olarak \\?\%home%\LogFiles\stdoutayarlar. Ortam %home değişkeni, Azure Uygulaması Hizmeti tarafından barındırılan uygulamalar için önceden tanımlanmıştır.

Günlük filtresi kuralları oluşturmak için ASP.NET Core günlük kaydı belgelerinin Kodda günlük filtresi kurallarını uygulama bölümüne bakın.

Yol biçimleri hakkında daha fazla bilgi için bkz . Windows sistemlerinde dosya yolu biçimleri.

Ara sunucu yapılandırması HTTP protokol ve eşleştirme belirteci kullanır

ASP.NET Çekirdek Modülü arasında oluşturulan ve Kestrel HTTP protokolünü kullanan ara sunucu. Modül Kestrel ile sunucunun dışında bir konumdan gelen trafiği dinleme riski yoktur.

bir eşleştirme belirteci, tarafından Kestrel alınan isteklerin IIS tarafından proksied olduğunu ve başka bir kaynaktan gelmediğini garanti etmek için kullanılır. Eşleştirme belirteci oluşturulur ve modül tarafından bir ortam değişkenine (ASPNETCORE_TOKEN) ayarlanır. Eşleştirme belirteci de her prxied isteğinde bir üst bilgi (MS-ASPNETCORE-TOKEN) olarak ayarlanır. IIS Ara Yazılımı, aldığı her isteği denetlediğinden, eşleştirme belirteci üst bilgisi değerinin ortam değişkeni değeriyle eşleşdiğini onaylar. Belirteç değerleri eşleşmezse istek günlüğe kaydedilir ve reddedilir. Eşleştirme belirteci ortam değişkeni ve modül Kestrel arasındaki trafiğe sunucunun kapalı bir konumundan erişilemez. Eşleştirme belirteci değerini bilmeden, bir siber saldırı aracı IIS Ara Yazılımı'nda denetimi atlayan istekler gönderemez.

IIS Paylaşılan Yapılandırması ile ASP.NET Çekirdek Modülü

ASP.NET Çekirdek Modülü yükleyicisi, TrustedInstaller hesabının ayrıcalıklarıyla çalışır. Yerel sistem hesabının IIS Paylaşılan Yapılandırması tarafından kullanılan paylaşım yolu için değiştirme izni olmadığından, paylaşımdaki applicationHost.config dosyasında modül ayarlarını yapılandırmaya çalışırken yükleyici erişim reddedildi hatası oluşturur.

IIS Paylaşılan Yapılandırması kullanırken şu adımları izleyin:

  1. IIS Paylaşılan Yapılandırmasını devre dışı bırakın.
  2. Yükleyiciyi çalıştırın.
  3. Güncelleştirilmiş applicationHost.config dosyasını paylaşıma aktarın.
  4. IIS Paylaşılan Yapılandırmasını yeniden etkinleştirin.

Modül sürümü ve Barındırma Paketi yükleyici günlükleri

Yüklü ASP.NET Çekirdek Modülünün sürümünü belirlemek için:

  1. Barındırma sisteminde %windir%\System32\inetsrv konumuna gidin.
  2. aspnetcore.dll dosyasını bulun.
  3. Dosyaya sağ tıklayın ve bağlam menüsünden Özellikler'i seçin.
  4. Ayrıntılar sekmesini seçin. Dosya sürümü ve Ürün sürümü, modülün yüklü sürümünü temsil edilir.

Modülün Barındırma Paketi yükleyici günlükleri C:\Users\%UserName%\AppData\Local\Temp konumunda bulunur. Dosya dd_DotNetCoreWinSvrHosting__<timestamp>_000_AspNetCoreModule_x64.log olarak adlandırılır.

Modül, şema ve yapılandırma dosyası konumları

Modül

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

Şema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

Yapılandırma

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

Dosyalar, applicationHost.config dosyasında aspnetcore aranarak bulunabilir.

Ek kaynaklar