ASP.NET Core temellerine genel bakış

Note

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.

Warning

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.

Bu makalede bağımlılık ekleme (DI), yapılandırma ve ara yazılım dahil olmak üzere ASP.NET Core uygulamaları oluşturmaya yönelik temel bilgiler yer almaktadır.

Bu makaledeki yönergeleri ekleyen veya yerine geçen Blazor temel bilgiler için bkz. ASP.NET Core Blazor temelleri.

Dosya Program

Çerçevenin proje şablonlarından oluşturulan ASP.NET Core uygulamaları, başlangıç kodunu Program.cs dosyasında (Program) içerir. Program dosyasının olduğu yerdir:

  • Uygulamanın gerektirdiği hizmetler yapılandırılır.
  • Uygulamanın istek işleme işlem hattı bir dizi ara yazılım bileşeni olarak tanımlanır.

Aşağıdaki uygulama başlangıç kodu iki uygulama türünü destekler:

// Initialize a new instance of the WebApplicationBuilder class 
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);

// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();

// Build the app
var app = builder.Build();

// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);

// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();

// Map static assets endpoints
app.MapStaticAssets();

// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");

// Add endpoints for Blazor
app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

// Run the app
app.Run();

Note

ASP.NET Core uygulamaları, Program dosyasında yapılan ek yapılandırmayla Sayfaları, Razor ve denetleyicili web API'lerini destekleyebilir.

Aşağıdaki uygulama başlangıç kodu iki uygulama türünü destekler:

// Initialize a new instance of the WebApplicationBuilder class 
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);

// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();

// Build the app
var app = builder.Build();

// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);

// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();

// Add antiforgery middleware
app.UseAntiforgery();

// Map static assets endpoints
app.MapStaticAssets();

// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");

// Add endpoints for Blazor
app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

// Run the app
app.Run();

Note

Program dosyasında ek yapılandırmayla, ASP.NET Core uygulamaları Sayfalarını, Razor ve denetleyicili web API'yi destekleyebilir.

Aşağıdaki uygulama başlangıç kodu çeşitli uygulama türlerini destekler:

// Initialize a new instance of the WebApplicationBuilder class 
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);

// Add services for Blazor (Razor components), Razor Pages, and MVC
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

// Build the app
var app = builder.Build();

// Configure the HTTP request pipeline

// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();

// Use static files middleware to serve static assets
app.UseStaticFiles();

// Use authorization middleware
app.UseAuthorization();

// Add antiforgery middleware
app.UseAntiforgery();

// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");

// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();

// Add endpoints for Razor Pages
app.MapRazorPages();

// Add endpoints for Blazor
app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

// Run the app
app.Run();

Aşağıdaki uygulama başlangıç kodu aşağıdakileri destekler:

// Initialize a new instance of the WebApplicationBuilder class 
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);

// Add services for Razor Pages and MVC
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

// Build the app
var app = builder.Build();

// Configure the HTTP request pipeline

// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();

// Use static files middleware to serve static assets
app.UseStaticFiles();

// Use authorization middleware
app.UseAuthorization();

// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");

// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();

// Add endpoints for Razor Pages
app.MapRazorPages();

// Run the app
app.Run();

Startup sınıfı

Startup sınıfı (Startup.cs) şu yerdir:

  • Uygulamanın gerektirdiği hizmetler ConfigureServices yönteminde yapılandırılır.
  • Uygulamanın istek işleme işlem hattı yönteminde Configure bir dizi ara yazılım bileşeni olarak tanımlanır.

Aşağıdaki uygulama başlangıç kodu aşağıdakileri destekler:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<RazorPagesMovieContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));

        services.AddControllersWithViews();
        services.AddRazorPages();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapDefaultControllerRoute();
            endpoints.MapRazorPages();
        });
    }
}

Daha fazla bilgi için bkz. ASP.NET Core'da uygulama başlatma ve ASP.NET Core Blazor başlatma.

Bağımlılık enjeksiyonu (hizmetleri)

ASP.NET Core yerleşik bağımlılık ekleme (DI) özelliği, yapılandırılan hizmetleri Bir uygulama genelinde Denetimin Tersine Çevrilmesi (IoC) için kullanılabilir hale getirir.

WebApplication.CreateBuilder çağrılarak WebApplicationBuilder örneği oluşturulduğunda, yapılandırma ve günlüğe kaydetme için hizmetler gibi çerçeve tarafından sağlanan hizmetler otomatik olarak eklenir:

var builder = WebApplication.CreateBuilder(args);

ile WebApplicationBuilder.ServicesDI kapsayıcısına ek hizmetler eklenir. Aşağıdaki örnek, Blazor hizmetlerini kaydeder:

builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();
builder.Services.AddServerSideBlazor();

DI çerçevesi, çalışma zamanında istenen hizmetlerin örneklerini sağlar. Blazor uygulamalarında, hizmetler genellikle çalışma zamanında, bir .razor dosyasında (@inject) Razor yönergesi kullanılarak DI'den çözümlenir. Aşağıdaki örnekte bileşen, URI gezintisini sorgulamak ve yönetmek için kullanılan gezinti yöneticisinin bir örneğini almak amacıyla /products soyutlamasını kullanır; düğme seçildiğinde ise kullanıcıyı NavigationManager konumundaki ürünler sayfasına yönlendirir:

@inject NavigationManager Navigation

<button @onclick="NavigateToProductList">
    Products
</button>

@code {
    private void NavigateToProductList()
    {
        Navigation.NavigateTo("/products");
    }
}

DI'den bir hizmeti çözümlemenin bir diğer yolu da oluşturucu ekleme kullanmaktır. Aşağıdaki örnekte, birincil kurucu (C# 12 veya sonrası), AppDbContext ve ILogger<OrderProcessor> türlerinde parametreler alır ve bunları çalışma zamanında logger ve context değişkenlerine çözümler (veritabanı ve günlükleme soyutlamalarının örnekleri). Veritabanı bağlamı örneği, veritabanında false alanının değeri IsProcessed olan tüm siparişleri işlemek için kullanılır ve işlenen her sipariş, günlük kaydedici örneği kullanılarak sipariş kimliğiyle (OrderId) bilgi düzeyinde günlüğe kaydedilir:

public class OrderProcessor(AppDbContext context, ILogger<OrderProcessor> logger)
{
    public async Task ProcessPendingOrdersAsync()
    {
        var orders = await context.Orders
            .Where(o => !o.IsProcessed)
            .ToListAsync();

        foreach (var order in orders)
        {
            order.IsProcessed = true;
            logger.LogInformation("Processed order ID {OrderId}.", order.Id);
        }

        await context.SaveChangesAsync();
    }
}

Bağımlılıkları doğrudan Minimal API uç noktalarının lambda parametrelerine de ekleyebilirsiniz. Aşağıdaki örnekte, /todos uç noktasından bir yapılacaklar öğeleri listesi döndürülür. ILogger<Program> için bilgileri günlüğe kaydetmek üzere bir günlük kaydedici örneği ve AppDbContext için veritabanından yanıtta kullanılacak yapılacak öğeleri listesini almak üzere bir veritabanı örneği kullanılır:

app.MapGet("/todos", async (AppDbContext context, ILogger<Program> logger) =>
{
    logger.LogInformation("Fetching todos using inline handler injection.");
    var todos = await context.Todos.ToListAsync();

    return Results.Ok(todos);
});

Host.CreateDefaultBuilder, Program dosyasında çağrıldığında, sınıfının yeni bir örneği; yapılandırma ve günlüğe kaydetme hizmetleri gibi HostBuilder otomatik olarak başlatılır:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Ek hizmetler, Startup.cs yönteminde (IServiceCollection), DI kapsayıcısının hizmet koleksiyonuna (Startup.ConfigureServices) eklenir. Aşağıdaki örnek MVC ve Razor Pages hizmetlerini kaydeder:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddRazorPages();
}

Hizmetler genellikle oluşturucu eklemesi kullanılarak DI'den çözümlenir. Oluşturucu ekleme ile bir sınıf, gerekli türde veya arabirimde bir oluşturucu parametresi bildirir. DI çerçevesi, çalışma zamanında hizmetin bir örneğini sağlar.

Yerleşik DI kapsayıcısı gereksinimlerinizi karşılamıyorsa bunun yerine bir üçüncü taraf IoC kapsayıcısı kullanılabilir.

Daha fazla bilgi için ASP.NET Core'da bağımlılık enjeksiyonu ve ASP.NET Core Blazor bağımlılık enjeksiyonu konularına bakın.

Environments

ASP.NET Core'da kullanılabilen çalıştırma ortamları şunlardır:

  • Development: Uygulama yerel geliştirme aşamasındayken.
  • Staging: Uygulama dağıtım için hazırlandığında.
  • Production: Uygulama kullanıcılar için yayındayken.

Uygulamanın çalıştığı konakta ortam değişkenini ASPNETCORE_ENVIRONMENT ayarlayarak bir uygulamanın çalıştığı ortamı belirtin. ASP.NET Core, uygulama başlangıcında ortam değişkenini okur ve uygulama çevresinde kod yürütmeyi denetlemek için değeri depolar.

Geliştirici kodu belirli bir ortamı denetleyebiliyor. Aşağıdaki Program dosyası örneğinde, yürütme bloğundaki kod yalnızca uygulama Development ortamında çalışmıyorsa çalışır:

if (!app.Environment.IsDevelopment())
{
    ...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (!env.IsDevelopment())
    {
        ...
    }

    ...
}

Daha fazla bilgi için bkz. ASP.NET Core çalışma zamanı ortamları ve ASP.NET Core Blazor ortamları.

Middleware

İstek işleme işlem hattı, bir dizi ara yazılım bileşeni olarak oluşturulur. Her bileşen bir HttpContext üzerinde işlemler gerçekleştirir ve ya işlem hattındaki sonraki ara yazılımı çağırır ya da isteği sonlandırır.

Kural gereği, ara yazılım bileşenleri "Use" ile başlayan bir uzantı yöntemi çağrılarak işlem hattına eklenir. İstek işleme işlem hattının bir bölümünü temsil eden aşağıdaki örnekte, özel durum işleme (UseExceptionHandler), HTTP Strict Transport Security (HSTS) protokolü (UseHsts) ve HTTPS yeniden yönlendirmesi (UseHttpsRedirection) için ara yazılım çağrılır. Ara yazılımlardan ikisi yalnızca uygulama ortamda yerel geliştirme Development aşamasında olmadığında tetiklenir; örneğin, uygulama dağıtım ( Staging ortam) veya üretim ortamında ( Production ortam) için hazırlandığında):

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error", createScopeForErrors: true);
    app.UseHsts();
}

app.UseHttpsRedirection();
if (env.IsDevelopment())
{
    ...
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();

ASP.NET Core zengin bir yerleşik ara yazılım kümesi içerir. Ayrıca, bir uygulamanın özel istek işleme belirtimlerini karşılamak için özel ara yazılım bileşenleri de oluşturabilirsiniz. Daha fazla bilgi için bkz. ASP.NET Core ara yazılımı.

Host

Başlangıçta, bir ASP.NET Core uygulaması bir host oluşturur. Ana bilgisayar, uygulamanın tüm kaynaklarını kapsüller, örneğin:

  • Bir HTTP sunucusu uygulaması
  • Ara yazılım bileşenleri
  • Logging
  • Bağımlılık enjeksiyonu (DI) hizmetleri
  • Configuration

ASP.NET Core uygulamasını çalıştırabilen üç farklı sunucu vardır.

ASP.NET Core WebApplication ve WebApplicationBuilder türler önerilir ve tüm ASP.NET Core proje şablonlarında kullanılır. WebApplication.NET Genel Konağına benzer şekilde davranır ve aynı arabirimlerin çoğunu kullanıma sunar, ancak yapılandırmak için daha az geri çağırma gerektirir. ASP.NET Core WebHost yalnızca geriye dönük uyumluluk için kullanılabilir.

Aşağıdaki örnek bir WebApplication örneği oluşturur ve appadlı bir değişkene atar:

var builder = WebApplication.CreateBuilder(args);

...

var app = builder.Build();

yöntemi, WebApplicationBuilder.Build bir konağı aşağıdaki gibi bir dizi varsayılan seçenekle yapılandırıyor:

  • Kestrel öğesini web sunucusu olarak kullanma ve IIS tümleştirmesini etkinleştirme
  • Uygulama ayarları dosyalarından (örneğin, appsettings.json), ortam değişkenlerinden, komut satırı bağımsız değişkenlerinden ve diğer yapılandırma kaynaklarından yapılandırma yükleniyor.
  • Günlüğe kaydetmeyi ayarlama ve günlüğe kaydetme çıkışını konsola yönlendirme ve günlüğe kaydetme sağlayıcılarında hata ayıklama.

İki konak vardır:

.NET Generic Host önerilir. ASP.NET Core Web Konağı yalnızca geriye dönük uyumluluk için kullanılabilir.

CreateDefaultBuilder Aşağıdaki örnekteki ve ConfigureWebHostDefaults yöntemleri, bir konağı aşağıdaki gibi bir dizi varsayılan seçenekle yapılandırıyor:

  • Kestrel öğesini web sunucusu olarak kullanma ve IIS tümleştirmesini etkinleştirme
  • Uygulama ayarları dosyalarından (örneğin, appsettings.json), ortam değişkenlerinden, komut satırı bağımsız değişkenlerinden ve diğer yapılandırma kaynaklarından yapılandırma yükleniyor.
  • Günlüğe kaydetmeyi ayarlama ve günlüğe kaydetme çıkışını konsola yönlendirme ve günlüğe kaydetme sağlayıcılarında hata ayıklama.
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

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

Web dışı senaryolar

Generic Host, diğer uygulama türlerinin günlük kaydı, bağımlılık enjeksiyonu (DI), yapılandırma ve uygulama kullanım ömrü yönetimi gibi ortak çerçeve uzantılarını kullanmasını sağlar. Daha fazla bilgi için, bkz. ASP.NET Core'de .NET Genel Ana Bilgisayarı ve ASP.NET Core'da barındırılan hizmetlerle arka plan görevleri.

Servers

ASP.NET Core uygulaması, HTTP isteklerini dinlemek için bir HTTP sunucusu uygulaması kullanır. Sunucu, istekleri bir içinde oluşturulan istek HttpContext kümesi olarak uygulamaya sunar.

Daha fazla bilgi için, bkz. ASP.NET Core'da Web sunucusu uygulamaları.

Windows

ASP.NET Core aşağıdaki sunucu uygulamalarını sağlar:

  • Kestrel platformlar arası bir web sunucusudur. Kestrel genellikle IIS kullanılarak ters ara sunucu yapılandırmasında çalıştırılır. ASP.NET Core 2.0 veya sonraki sürümlerinde, Kestrel doğrudan İnternet'e açık genel kullanıma yönelik bir uç sunucu olarak çalıştırılabilir.
  • IIS HTTP Sunucusu, Windows için IIS kullanan bir sunucudur. Bu sunucuyla, ASP.NET Core uygulaması ve IIS aynı işlemde çalışır.
  • HTTP.sys , IIS ile kullanılmayan bir Windows sunucusudur.

macOS ve Linux

ASP.NET Core, Kestrel platformlar arası sunucu uygulamasını sağlar. ASP.NET Core 2.0 veya sonraki sürümlerinde, Kestrel doğrudan İnternet'e açık genel kullanıma yönelik bir uç sunucu olarak çalışabilir. Kestrel genellikle Nginx veya Apache ile ters ara sunucu yapılandırmasında çalıştırılır.

Configuration

ASP.NET Core, ayarları sıralı bir yapılandırma sağlayıcısı kümesinden ad-değer çiftleri olarak alan bir yapılandırma çerçevesi sağlar. Yerleşik yapılandırma sağlayıcıları JSON dosyaları (), XML dosyaları.xml (.json), ortam değişkenleri ve komut satırı bağımsız değişkenleri gibi çeşitli kaynaklar için kullanılabilir. Diğer kaynakları desteklemek için özel yapılandırma sağlayıcıları oluşturabilirsiniz.

Varsayılan olarak, ASP.NET Core uygulamalar uygulama ayarları dosyalarından (örneğin, appsettings.json), ortam değişkenlerinden ve komut satırından okuyacak şekilde yapılandırılır.

Uygulamanın yapılandırması yüklendiğinde, ortam değişkenlerindeki değerler uygulama ayarları dosyalarındaki değerleri geçersiz kılar. Seçenekler API'sini ilgili yapılandırma değerlerini okumak için kullanabilirsiniz.

.NET, ortamdaki Development parolalar gibi gizli yapılandırma verilerini yönetmek için Gizli Dizi Yöneticisi'ni sağlar. Üretim gizli bilgileri için Azure Key Vault kullanmanızı öneririz.

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

Logging

ASP.NET Core, çeşitli günlüğe kaydetme sağlayıcılarıyla çalışan bir günlüğe kaydetme API’sini destekler:

  • Console
  • Debug
  • Windows'da Olay İzleme
  • Windows Olay Günlükleri
  • TraceSource
  • Azure App Service
  • Azure Uygulama Analizleri
  • Üçüncü taraf sağlayıcılar

Günlük oluşturmak için bağımlılık ekleme (DI) içinden bir LogInformation hizmeti çözümleyin ve ILogger<TCategoryName> gibi günlüğe kaydetme yöntemlerini çağırın. Bir logger nesnesi ve logger nesnesi için bir konsol sağlayıcısı, WebApplication.CreateBuilder yöntemi çağrıldığında DI kapsayıcısında otomatik olarak saklanır.

Aşağıdaki örnek, DI'den bir günlük örneğinin nasıl alındığını ve hava durumu verilerini bildiren bir WeatherBlazor uygulamanın bileşeninde (Weather.razor) nasıl kullanılacağını gösterir:

@inject ILogger<Weather> Logger

...

@code {
    protected override async Task OnInitializedAsync()
    {
        Logger.LogInformation("OnInitializedAsync method called!");

        ...
    }
}

Razor Pages ve MVC uygulamaları için yönlendirme yönergeleri de dahil olmak üzere daha fazla bilgi için .NET ve ASP.NET Core'da günlük kaydı ve ASP.NET Core Blazor günlüğe kaydetme konularına bakın.

Routing

ASP.NET Core yönlendirme, gelen istekleri bir uygulamadaki belirli uç noktalara eşleyen bir mekanizmadır. Razor bileşenleri, Razor sayfaları, MVC denetleyici eylemleri veya ara yazılım gibi farklı bileşenlere karşılık gelen URL desenleri tanımlamanızı sağlar.

UseRouting yöntemi, yönlendirme ara yazılımını istek işlem hattına ekler. Bu ara yazılım yönlendirme bilgilerini işler ve her istek için uygun uç noktayı belirler. En Az Ana Bilgisayar kullanan uygulamalarda, UseRouting ara yazılım işleme sırasını değiştirmek istemediğiniz sürece geliştirici kodunda açıkça çağrılmaz.

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

Hatalarla başa çıkma

ASP.NET Core, hataları işlemek için, şunlar gibi yerleşik özelliklere sahiptir:

  • Geliştirici özel durum sayfası
  • Özel hata sayfaları
  • Statik durum kodu sayfaları
  • Özel durum işlemeyi başlatma

Daha fazla bilgi için bkz. ASP.NET Core hatalarını işleme ve ASP.NET Core Blazor uygulamalarında hataları işleme.

HTTP istekleri oluşturma

Bir IHttpClientFactory uygulaması HttpClient örnekleri oluşturmak için kullanılabilir. Üreteç:

  • Mantıksal HttpClient örneklerini adlandırmak ve yapılandırmak için merkezi bir konum sağlar. Örneğin, uygulamanın web API'sine sahip veri isteklerinin çoğu için varsayılan istemciyi kullanın ve GitHub erişmek için farklı yapılandırılmış bir istemci kaydedin.
  • Giden istek ara yazılım işlem hattı oluşturmak için birden çok yetkilendirilmiş işleyicinin kaydını ve zincirlemeyi destekler. Bu desen, ASP.NET Core'ın gelen middleware işlem hattına benzer. Desen, önbelleğe alma, hata işleme, serileştirme ve günlüğe kaydetme dahil olmak üzere HTTP isteklerine yönelik kesme sorunlarını yönetmek için bir mekanizma sağlar.
  • Geçici hata işleme için popüler bir üçüncü taraf kitaplığı olan Polly ile tümleşir.
  • HttpClientHandler yaşam sürelerini el ile yönetirken ortaya çıkan yaygın DNS sorunlarından kaçınmak için, temel alınan HttpClient örneklerinin havuza alınmasını ve yaşam süresini yönetir.
  • Fabrika tarafından oluşturulan istemciler aracılığıyla gönderilen tüm istekler için ILogger aracılığıyla yapılandırılabilen bir kayıt tutma deneyimi ekler.

Daha fazla bilgi için bkz. IHttpClientFactory ile HTTP istekleri - ASP.NET Core ve ASP.NET Core Blazor uygulamasından web API'sini çağırma.

İçerik kökü

İçerik kökü, aşağıdakiler için temel yoldur:

  • Uygulamayı barındıran yürütülebilir dosya (.exe ).
  • Uygulamayı (.dll) oluşturan derlenmiş derlemeler.
  • Uygulama tarafından kullanılan içerik dosyaları; örneğin .razor dosyaları (.cshtml, .json), yapılandırma dosyaları (.xml, .db) ve veri dosyaları (Razor).
  • wwwroot, genellikle klasörüdür.

Geliştirme sırasında içerik kökü varsayılan olarak projenin kök dizinine ayarlanır. Bu dizin aynı zamanda hem uygulamanın içerik dosyaları hem de web kökü için temel yoldur. host oluşturulurken yolunu belirleyerek farklı bir içerik kökü belirtin.

Daha fazla bilgi için bkz. ASP.NET Core'da .NET Genel Ana Bilgisayarı ve ASP.NET Core Uygulamalarında Statik Dosyalar Sunma.

Web kökü

Web kökü, stil sayfaları, JavaScript dosyaları ve görüntüler gibi genel, statik kaynak dosyalarının temel yoludur.

Varsayılan olarak, statik dosyalar yalnızca web kök dizininden ve alt dizinlerinden sunulur. Web kök yolu varsayılan olarak {CONTENT ROOT}/wwwrootkullanılır; burada {CONTENT ROOT} yer tutucu, içerik köküdür. Ana bilgisayarı oluştururken yolunu ayarlayarak farklı bir web kökü belirtin. Ayrıca, uygulamanın proje dosyasındaki wwwrootproje öğesiyle<Content> içinde dosya yayımlamayı engelleyebilirsiniz.

Razor .cshtml dosyalarında ~/, web kökünü gösterir. ile ~/ başlayan bir yol , sanal yol olarak adlandırılır.

Daha fazla bilgi için ASP.NET Core'da .NET Genel Ana Bilgisayarı ve ASP.NET Core Uygulamalarında Statik Dosyalar Sunma konularına bakın.

Örnek indirme

Çoğu makale ve öğretici örnek koda bağlantılar içerir.

  1. ASP.NET deposu zip dosyasını indirin.
  2. AspNetCore.Docs-main.zip dosyasının sıkıştırmasını açın.
  3. Açılmış bir depodaki bir makalenin örnek uygulamasına erişmek için, makaledeki örnek bağlantısında verilen URL'yi kullanarak örneğin klasörüne gidin. Genellikle makalenin örnek bağlantısı makalenin üst kısmında Örnek kodu görüntüle veya indir bağlantı metniyle gösterilir.

Tek bir örnek uygulamayı ve yalnızca son kaydını almak için git sparse-checkout kullanın.

Örnek GitHub deposu içinBlazor aşağıdaki örnekte, git sparse-checkout set komut örnek klasörün yolunu belirtir:

  • {VERSION FOLDER} yer tutucusunu sürüm klasörüyle değiştirin.
  • Yer tutucuyu {SAMPLE FOLDER} örnek klasörle değiştirin.

Komut kabuğunda, örneği kopyalamak istediğiniz klasöre gidin. Komut kabuğunda, sürüm/örnek klasör yolunu git sparse-checkout set komutuna geçirerek aşağıdaki komutları çalıştırın:

git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set {VERSION FOLDER}/{SAMPLE FOLDER}

Aşağıdaki PowerShell örneği, 10.0 Blazor Web App örneğini alır ve powershell'in ~/documents değişiklik dizini (cd) komutunun yolunu kullanarak bu örneği kullanıcının belgeler klasörüne yerleştirir:

cd "~/documents"
git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set 10.0/BlazorSample_BlazorWebApp

Örnek kodda ön işlemci yönergeleri

Birden çok senaryoyu göstermek için örnek uygulamalar, örnek kodun #define farklı bölümlerini seçmeli olarak derlemek ve çalıştırmak için ve #if-#else/#elif-#endif önişlemci yönergelerini kullanır. Bu yaklaşımı kullanan örnekler için, çalıştırmak istediğiniz senaryoyla ilişkili simgeyi tanımlamak için C# dosyalarının en üstündeki yönergesini ayarlayın #define . Bazı örneklerin bir senaryoyu çalıştırmak için birden çok dosya üst kısmında sembol tanımlaması gerekir.

Örneğin, aşağıdaki simge listesi #define dört senaryonun kullanılabilir olduğunu gösterir (her simge için bir senaryo). Geçerli örnek yapılandırması TemplateCode senaryosunu çalıştırır:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

Örneği ExpandDefault senaryosunu çalıştıracak şekilde değiştirmek için ExpandDefault simgesini tanımlayın ve kalan simgeleri açıklama satırı yapılmış şekilde bırakın:

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

Kod bölümlerini seçmeli olarak derlemek için C# önişlemci yönergelerini kullanma hakkında daha fazla bilgi için bkz. #define (C# Başvurusu) ve #if (C# Başvurusu).

Örnek koddaki bölgeler

Bazı örnek uygulamalar , #region ve #endregion C# yönergeleriyle çevrili kod bölümleri içerir. Belge derleme sistemi, bu bölgeleri işlenen belge konularına ekler.

Bölge adları genellikle "kod parçacığı" sözcüğünü içerir. Aşağıdaki örnekte adlı snippet_WebHostDefaultsbir bölge gösterilmektedir:

#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });
#endregion

Yukarıdaki C# kod parçacığına, konunun markdown dosyasında aşağıdaki satırla başvurulur:

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]

Kodu çevreleyen #region ve #endregion yönergelerini güvenle görmezden gelebilir veya kaldırabilirsiniz. Konu başlığında açıklanan örnek senaryoları çalıştırmayı planlıyorsanız, bu yönergelerin içindeki kodu değiştirmeyin.

Daha fazla bilgi için bkz. ASP.NET belgelerine katkıda bulunma: Kod parçacıkları.

Belge Nesne Modeli (DOM)

Bu belge kümesi boyunca Belge Nesne Modeline yapılan başvurular , DOM kısaltmasını kullanır.

Daha fazla bilgi için bkz. DOM'a Giriş (MDN belgeleri) ve Düzey 1 Belge Nesne Modeli Belirtimi (W3C).

Bayt çarpanları

.NET bayt boyutları, 1024'ün kuvvetlerine dayanan ondalık olmayan bayt katlarını ifade etmek için metrik ön ekleri kullanır.

Ad (kısaltma) Size Example
Kilobayt (KB) 1.024 bayt 1 KB = 1.024 bayt
Megabayt (MB) 1.0242 bayt 1 MB = 1.048.576 bayt
Gigabayt (GB) 1.0243 bayt 1 GB = 1.073.741.824 bayt

Destek istekleri

Yalnızca belgelerle ilgili sorunlar dotnet/AspNetCore.Docs deposu için uygundur. Ürün desteği için belge sorunu açmayın. Aşağıdaki destek kanallarından biri veya daha fazlası aracılığıyla yardım isteyin:

Çerçevede veya ürün geri bildiriminde olası bir hata için dotnet/aspnetcore sorunları adresinde ASP.NET Core ürün birimiyle ilgili bir sorun açın. Hata raporları genellikle aşağıdakileri gerektirir:

  • Sorunun net açıklaması: Sorunu açarken ürün birimi tarafından sağlanan GitHub sorun şablonundaki yönergeleri izleyin.
  • Basit bir çoğaltma projesi: Ürün birimi mühendislerinin indirip çalıştırması için GitHub'a bir proje yerleştirin. Projeyi, sorunun açılış açıklamasına çapraz bağlayın.

Bir makaleyle ilgili olası bir sorun için bir belge sorunu açın. Belge sorununu açmak için makalenin en altındaki Belge sorunu geri bildirimi aç bağlantısını kullanın. Sorununuza eklenen meta veriler izleme verileri sağlar ve makalenin yazarına otomatik olarak ping atar. Konu, belge sorununu açmadan önce ürün birimiyle tartışıldıysa, belge sorununun açılış açıklamasına mühendislik sorununa bir çapraz bağlantı yerleştirin.

Blazor belgeleriyle ilgili GitHub sorunları otomatik olarak Blazor.Docs projesinde (dotnet/AspNetCore.Docs GitHub deposu) önceliklendirme için işaretlenir. Lütfen, özellikle hafta sonları ve tatillerde yanıt için lütfen kısa bir süre bekleyin. Belge yazarları hafta içi genellikle 24 saat içinde yanıt verir.

Visual Studio ile ilgili sorunlar veya geri bildirim için Visual Studio'nun içinden Sorun Bildir veya Özellik Öner hareketlerini kullanın. Bu hareketler Visual Studio'nun iç sorunlarını açar. Daha fazla bilgi için bkz. Visual Studio Geri Bildirimi.

Visual Studio Code ile ilgili sorunlar için topluluk destek forumlarında destek isteyin. Hata raporları ve ürün geri bildirimi için microsoft/vscode GitHub deposunda bir sorun açın.

Ek kaynaklar