gambaran umum dasar-dasar ASP.NET Core

Artikel ini memberikan gambaran umum tentang dasar-dasar untuk membangun aplikasi ASP.NET Core, termasuk injeksi dependensi (DI), konfigurasi, middleware, dan banyak lagi.

Program.cs

ASP.NET Aplikasi core yang dibuat dengan templat web berisi kode pengaktifan aplikasi dalam Program.cs file. File Program.cs adalah tempat:

  • Layanan yang diperlukan oleh aplikasi dikonfigurasi.
  • Alur penanganan permintaan aplikasi didefinisikan sebagai serangkaian komponen middleware.

Kode startup aplikasi berikut mendukung:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapGet("/hi", () => "Hello!");

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.Run();

Injeksi dependensi (layanan)

ASP.NET Core menyertakan injeksi dependensi (DI) yang membuat layanan yang dikonfigurasi tersedia di seluruh aplikasi. Layanan ditambahkan ke kontainer DI dengan WebApplicationBuilder.Services, builder.Services dalam kode sebelumnya. WebApplicationBuilder Ketika dibuat, banyak layanan yang disediakan kerangka kerja ditambahkan. builder adalah WebApplicationBuilder dalam kode berikut:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

Dalam kode yang disorot sebelumnya, builder memiliki konfigurasi, pengelogan, dan banyak layanan lain yang ditambahkan ke kontainer DI.

Kode berikut menambahkan Razor Pages, pengontrol MVC dengan tampilan, dan kustom DbContext ke kontainer DI:

using Microsoft.EntityFrameworkCore;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

builder.Services.AddDbContext<RazorPagesMovieContext>(options =>
   options.UseSqlServer(builder.Configuration.GetConnectionString("RPMovieContext")));

var app = builder.Build();

Layanan biasanya diselesaikan dari DI menggunakan injeksi konstruktor. Kerangka kerja DI menyediakan instans layanan ini saat runtime.

Kode berikut menggunakan injeksi konstruktor untuk menyelesaikan konteks database dan pencatat dari DI:

public class IndexModel : PageModel
{
    private readonly RazorPagesMovieContext _context;
    private readonly ILogger<IndexModel> _logger;

    public IndexModel(RazorPagesMovieContext context, ILogger<IndexModel> logger)
    {
        _context = context;
        _logger = logger;
    }

    public IList<Movie> Movie { get;set; }

    public async Task OnGetAsync()
    {
        _logger.LogInformation("IndexModel OnGetAsync.");
        Movie = await _context.Movie.ToListAsync();
    }
}

Middleware

Alur penanganan permintaan terdiri dari serangkaian komponen middleware. Setiap komponen melakukan operasi pada HttpContext dan memanggil middleware berikutnya dalam alur atau mengakhiri permintaan.

Berdasarkan konvensi, komponen middleware ditambahkan ke alur dengan memanggil Use{Feature} metode ekstensi. Middleware yang ditambahkan ke aplikasi disorot dalam kode berikut:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapGet("/hi", () => "Hello!");

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.Run();

Untuk informasi selengkapnya, lihat ASP.NET Core Middleware.

Host

Saat memulai, aplikasi ASP.NET Core membangun host. Host merangkum semua sumber daya aplikasi, seperti:

  • Implementasi server HTTP
  • Komponen middleware
  • Pembuatan Log
  • Layanan injeksi dependensi (DI)
  • Konfigurasi

Ada tiga host yang berbeda:

Host WebApplication .NET direkomendasikan dan digunakan di semua templat ASP.NET Core. Host WebApplication .NET dan Host Generik .NET berbagi banyak antarmuka dan kelas yang sama. ASP.NET Core Web Host hanya tersedia untuk kompatibilitas mundur.

Contoh berikut membuat instans Host WebApplication:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

Metode WebApplicationBuilder.Build mengonfigurasi host dengan serangkaian opsi default, seperti:

  • Gunakan Kestrel sebagai server web dan aktifkan integrasi IIS.
  • Muat konfigurasi dari appsettings.json, variabel lingkungan, argumen baris perintah, dan sumber konfigurasi lainnya.
  • Kirim output pengelogan ke penyedia konsol dan debug.

Skenario non-web

Host Generik memungkinkan jenis aplikasi lain untuk menggunakan ekstensi kerangka kerja lintas pemotongan, seperti pengelogan, injeksi dependensi (DI), konfigurasi, dan manajemen masa pakai aplikasi. Untuk informasi selengkapnya, lihat Host Generik .NET di ASP.NET tugas Inti dan Latar Belakang dengan layanan yang dihosting di ASP.NET Core.

Server

Aplikasi ASP.NET Core menggunakan implementasi server HTTP untuk mendengarkan permintaan HTTP. Server menampilkan permintaan ke aplikasi sebagai sekumpulan fitur permintaan yang HttpContextterdiri dari .

ASP.NET Core menyediakan implementasi server berikut:

  • Kestrel adalah server web lintas platform. Kestrel sering dijalankan dalam konfigurasi proksi terbalik menggunakan IIS. Di ASP.NET Core 2.0 atau yang lebih baru, Kestrel dapat dijalankan sebagai server tepi yang menghadap publik yang diekspos langsung ke Internet.
  • Server HTTP IIS adalah server untuk Windows yang menggunakan IIS. Dengan server ini, aplikasi ASP.NET Core dan IIS berjalan dalam proses yang sama.
  • HTTP.sys adalah server untuk Windows yang tidak digunakan dengan IIS.

Untuk informasi selengkapnya, lihat Implementasi server web di ASP.NET Core.

Konfigurasi

ASP.NET Core menyediakan kerangka kerja konfigurasi yang mendapatkan pengaturan sebagai pasangan nilai nama dari sekumpulan penyedia konfigurasi yang diurutkan. Penyedia konfigurasi bawaan tersedia untuk berbagai sumber, seperti .json file, file, .xml variabel lingkungan, dan argumen baris perintah. Tulis penyedia konfigurasi kustom untuk mendukung sumber lain.

Secara default, aplikasi ASP.NET Core dikonfigurasi untuk membaca dari appsettings.json, variabel lingkungan, baris perintah, dan banyak lagi. Saat konfigurasi aplikasi dimuat, nilai dari variabel lingkungan mengambil alih nilai dari appsettings.json.

Untuk mengelola data konfigurasi rahasia seperti kata sandi, .NET Core menyediakan Secret Manager. Untuk rahasia produksi, kami merekomendasikan Azure Key Vault.

Untuk informasi selengkapnya, lihat Konfigurasi di ASP.NET Core.

Lingkungan

Lingkungan eksekusi, seperti Development, , Stagingdan Production, tersedia di ASP.NET Core. Tentukan lingkungan tempat aplikasi berjalan dengan mengatur ASPNETCORE_ENVIRONMENT variabel lingkungan. ASP.NET Core membaca variabel lingkungan tersebut saat memulai aplikasi dan menyimpan nilai dalam implementasi IWebHostEnvironment . Implementasi ini tersedia di mana saja dalam aplikasi melalui injeksi dependensi (DI).

Contoh berikut mengonfigurasi handler pengecualian dan middleware HTTP Strict Transport Security Protocol (HSTS) saat tidak berjalan di Development lingkungan:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapGet("/hi", () => "Hello!");

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.Run();

Untuk informasi selengkapnya, lihat Menggunakan beberapa lingkungan di ASP.NET Core.

Pembuatan Log

ASP.NET Core mendukung API pengelogan yang berfungsi dengan berbagai penyedia pengelogan bawaan dan pihak ketiga. Penyedia yang tersedia meliputi:

  • Konsol
  • Debug
  • Pelacakan Peristiwa di Windows
  • Log Peristiwa Windows
  • TraceSource
  • Azure App Service
  • Azure Application Insights

Untuk membuat log, atasi ILogger<TCategoryName> layanan dari injeksi dependensi (DI) dan metode pengelogan panggilan seperti LogInformation. Contohnya:

public class IndexModel : PageModel
{
    private readonly RazorPagesMovieContext _context;
    private readonly ILogger<IndexModel> _logger;

    public IndexModel(RazorPagesMovieContext context, ILogger<IndexModel> logger)
    {
        _context = context;
        _logger = logger;
    }

    public IList<Movie> Movie { get;set; }

    public async Task OnGetAsync()
    {
        _logger.LogInformation("IndexModel OnGetAsync.");
        Movie = await _context.Movie.ToListAsync();
    }
}

Untuk informasi selengkapnya, lihat Pengelogan .NET Core dan ASP.NET Core.

Perutean

Rute adalah pola URL yang dipetakan ke handler. Handler biasanya adalah Razor halaman, metode tindakan dalam pengontrol MVC, atau middleware. perutean ASP.NET Core memberi Anda kontrol atas URL yang digunakan oleh aplikasi Anda.

Kode berikut, yang dihasilkan oleh templat aplikasi web ASP.NET Core, memanggil UseRouting:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Untuk informasi selengkapnya, lihat Perutean di ASP.NET Core.

Penanganan kesalahan

ASP.NET Core memiliki fitur bawaan untuk menangani kesalahan, seperti:

  • Halaman pengecualian pengembang
  • Halaman kesalahan kustom
  • Halaman kode status statis
  • Penanganan pengecualian startup

Untuk informasi selengkapnya, lihat Menangani kesalahan di ASP.NET Core.

Buat permintaan HTTP

Implementasi IHttpClientFactory tersedia untuk membuat HttpClient instans. Pabrik:

  • Menyediakan lokasi pusat untuk penamaan dan konfigurasi instans HttpClient logis. Misalnya, daftarkan dan konfigurasikan klien github untuk mengakses GitHub. Mendaftarkan dan mengonfigurasi klien default untuk tujuan lain.
  • Mendukung pendaftaran dan penautan beberapa penangan delegasi untuk membangun alur middleware permintaan keluar. Pola ini mirip dengan alur middleware masuk ASP.NET Core. Pola ini menyediakan mekanisme untuk mengelola masalah lintas pemotongan untuk permintaan HTTP, termasuk penembolokan, penanganan kesalahan, serialisasi, dan pengelogan.
  • Terintegrasi dengan Polly, pustaka pihak ketiga populer untuk penanganan kesalahan sementara.
  • Mengelola pengumpulan dan masa pakai instans yang mendasarinya HttpClientHandler untuk menghindari masalah DNS umum yang terjadi saat mengelola HttpClient masa pakai secara manual.
  • Menambahkan pengalaman pengelogan yang dapat dikonfigurasi melalui ILogger untuk semua permintaan yang dikirim melalui klien yang dibuat oleh pabrik.

Untuk informasi selengkapnya, lihat Membuat permintaan HTTP menggunakan IHttpClientFactory di ASP.NET Core.

Akar konten

Akar konten adalah jalur dasar untuk:

  • Yang dapat dieksekusi menghosting aplikasi (.exe).
  • Rakitan yang dikompilasi yang membentuk aplikasi (.dll).
  • File konten yang digunakan oleh aplikasi, seperti:
    • Razor file (.cshtml, .razor)
    • File konfigurasi (.json, .xml)
    • File data (.db)
  • Akar Web, biasanya folder wwwroot.

Selama pengembangan, akar konten default ke direktori akar proyek. Direktori ini juga merupakan jalur dasar untuk file konten aplikasi dan akar Web. Tentukan akar konten yang berbeda dengan mengatur jalurnya saat membangun host. Untuk informasi selengkapnya, lihat Akar konten.

Akar web

Akar web adalah jalur dasar untuk file sumber daya statis publik, seperti:

  • Lembar gaya (.css)
  • JavaScript (.js)
  • Gambar (.png, .jpg)

Secara default, file statis hanya dilayani dari direktori akar web dan sub-direktorinya. Jalur akar web default ke {content root}/wwwroot. Tentukan akar web yang berbeda dengan mengatur jalurnya saat membangun host. Untuk informasi selengkapnya, lihat Akar web.

Cegah penerbitan file di wwwroot dengan <item proyek Konten> dalam file proyek. Contoh berikut mencegah penerbitan konten di wwwroot/local dan sub-direktorinya:

<ItemGroup>
  <Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>

Dalam Razor.cshtml file, ~/ menunjuk ke akar web. Jalur yang dimulai dengan ~/ disebut sebagai jalur virtual.

Untuk informasi selengkapnya, lihat File statis di ASP.NET Core.

Sumber Daya Tambahan:

Artikel ini memberikan gambaran umum tentang dasar-dasar untuk membangun aplikasi ASP.NET Core, termasuk injeksi dependensi (DI), konfigurasi, middleware, dan banyak lagi.

Kelas Startup

Kelas Startup adalah di mana:

  • Layanan yang diperlukan oleh aplikasi dikonfigurasi.
  • Alur penanganan permintaan aplikasi didefinisikan, sebagai serangkaian komponen middleware.

Berikut adalah kelas sampel Startup :

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();
        });
    }
}

Untuk informasi selengkapnya, lihat Pengaktifan aplikasi di ASP.NET Core.

Injeksi dependensi (layanan)

ASP.NET Core menyertakan kerangka kerja injeksi dependensi (DI) bawaan yang membuat layanan yang dikonfigurasi tersedia di seluruh aplikasi. Misalnya, komponen pengelogan adalah layanan.

Kode untuk mengonfigurasi (atau mendaftarkan) layanan ditambahkan ke Startup.ConfigureServices metode . Contohnya:

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

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

Layanan biasanya diselesaikan dari DI menggunakan injeksi konstruktor. Dengan injeksi konstruktor, kelas mendeklarasikan parameter konstruktor dari jenis yang diperlukan atau antarmuka. Kerangka kerja DI menyediakan instans layanan ini saat runtime.

Contoh berikut menggunakan injeksi konstruktor untuk mengatasi RazorPagesMovieContext dari DI:

public class IndexModel : PageModel
{
    private readonly RazorPagesMovieContext _context;

    public IndexModel(RazorPagesMovieContext context)
    {
        _context = context;
    }

    // ...

    public async Task OnGetAsync()
    {
        Movies = await _context.Movies.ToListAsync();
    }
}

Jika kontainer Inversion of Control (IoC) bawaan tidak memenuhi semua kebutuhan aplikasi, kontainer IoC pihak ketiga dapat digunakan sebagai gantinya.

Untuk informasi selengkapnya, lihat Injeksi dependensi di ASP.NET Core.

Middleware

Alur penanganan permintaan terdiri dari serangkaian komponen middleware. Setiap komponen melakukan operasi pada HttpContext dan memanggil middleware berikutnya dalam alur atau mengakhiri permintaan.

Berdasarkan konvensi, komponen middleware ditambahkan ke alur dengan memanggil Use... metode ekstensi dalam Startup.Configure metode . Misalnya, untuk mengaktifkan penyajian file statis, panggil UseStaticFiles.

Contoh berikut mengonfigurasi alur penanganan permintaan:

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

    app.UseRouting();

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

ASP.NET Core mencakup sekumpulan middleware bawaan yang kaya. Komponen middleware kustom juga dapat ditulis.

Untuk informasi selengkapnya, lihat ASP.NET Core Middleware.

Host

Saat memulai, aplikasi ASP.NET Core membangun host. Host merangkum semua sumber daya aplikasi, seperti:

  • Implementasi server HTTP
  • Komponen middleware
  • Pembuatan Log
  • Layanan injeksi dependensi (DI)
  • Konfigurasi

Ada dua host yang berbeda:

  • Host Umum .NET
  • ASP.NET Core Web Host

Host Generik .NET direkomendasikan. ASP.NET Core Web Host hanya tersedia untuk kompatibilitas mundur.

Contoh berikut membuat Host Generik .NET:

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>();
            });
}

Metode CreateDefaultBuilder dan ConfigureWebHostDefaults mengonfigurasi host dengan serangkaian opsi default, seperti:

  • Gunakan Kestrel sebagai server web dan aktifkan integrasi IIS.
  • Muat konfigurasi dari appsettings.json, appsettings.{Environment}.json, variabel lingkungan, argumen baris perintah, dan sumber konfigurasi lainnya.
  • Kirim output pengelogan ke penyedia konsol dan debug.

Untuk informasi selengkapnya, lihat Host Generik .NET di ASP.NET Core.

Skenario non-web

Host Generik memungkinkan jenis aplikasi lain untuk menggunakan ekstensi kerangka kerja lintas pemotongan, seperti pengelogan, injeksi dependensi (DI), konfigurasi, dan manajemen masa pakai aplikasi. Untuk informasi selengkapnya, lihat Host Generik .NET di ASP.NET tugas Inti dan Latar Belakang dengan layanan yang dihosting di ASP.NET Core.

Server

Aplikasi ASP.NET Core menggunakan implementasi server HTTP untuk mendengarkan permintaan HTTP. Server menampilkan permintaan ke aplikasi sebagai sekumpulan fitur permintaan yang HttpContextterdiri dari .

ASP.NET Core menyediakan implementasi server berikut:

  • Kestrel adalah server web lintas platform. Kestrel sering dijalankan dalam konfigurasi proksi terbalik menggunakan IIS. Di ASP.NET Core 2.0 atau yang lebih baru, Kestrel dapat dijalankan sebagai server tepi yang menghadap publik yang diekspos langsung ke Internet.
  • Server HTTP IIS adalah server untuk Windows yang menggunakan IIS. Dengan server ini, aplikasi ASP.NET Core dan IIS berjalan dalam proses yang sama.
  • HTTP.sys adalah server untuk Windows yang tidak digunakan dengan IIS.

Untuk informasi selengkapnya, lihat Implementasi server web di ASP.NET Core.

Konfigurasi

ASP.NET Core menyediakan kerangka kerja konfigurasi yang mendapatkan pengaturan sebagai pasangan nilai nama dari sekumpulan penyedia konfigurasi yang diurutkan. Penyedia konfigurasi bawaan tersedia untuk berbagai sumber, seperti .json file, file, .xml variabel lingkungan, dan argumen baris perintah. Tulis penyedia konfigurasi kustom untuk mendukung sumber lain.

Secara default, aplikasi ASP.NET Core dikonfigurasi untuk membaca dari appsettings.json, variabel lingkungan, baris perintah, dan banyak lagi. Saat konfigurasi aplikasi dimuat, nilai dari variabel lingkungan mengambil alih nilai dari appsettings.json.

Cara yang disukai untuk membaca nilai konfigurasi terkait adalah menggunakan pola opsi. Untuk informasi selengkapnya, lihat Mengikat data konfigurasi hierarkis menggunakan pola opsi.

Untuk mengelola data konfigurasi rahasia seperti kata sandi, .NET Core menyediakan Secret Manager. Untuk rahasia produksi, kami merekomendasikan Azure Key Vault.

Untuk informasi selengkapnya, lihat Konfigurasi di ASP.NET Core.

Lingkungan

Lingkungan eksekusi, seperti Development, , Stagingdan Production, adalah gagasan kelas satu di ASP.NET Core. Tentukan lingkungan tempat aplikasi berjalan dengan mengatur ASPNETCORE_ENVIRONMENT variabel lingkungan. ASP.NET Core membaca variabel lingkungan tersebut saat memulai aplikasi dan menyimpan nilai dalam implementasi IWebHostEnvironment . Implementasi ini tersedia di mana saja dalam aplikasi melalui injeksi dependensi (DI).

Contoh berikut mengonfigurasi aplikasi untuk memberikan informasi kesalahan terperinci saat berjalan di Development lingkungan:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

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

Untuk informasi selengkapnya, lihat Menggunakan beberapa lingkungan di ASP.NET Core.

Pembuatan Log

ASP.NET Core mendukung API pengelogan yang berfungsi dengan berbagai penyedia pengelogan bawaan dan pihak ketiga. Penyedia yang tersedia meliputi:

  • Konsol
  • Debug
  • Pelacakan Peristiwa di Windows
  • Log Peristiwa Windows
  • TraceSource
  • Azure App Service
  • Azure Application Insights

Untuk membuat log, atasi ILogger<TCategoryName> layanan dari injeksi dependensi (DI) dan metode pengelogan panggilan seperti LogInformation. Contohnya:

public class TodoController : ControllerBase
{
    private readonly ILogger _logger;

    public TodoController(ILogger<TodoController> logger)
    {
        _logger = logger;
    }

    [HttpGet("{id}", Name = "GetTodo")]
    public ActionResult<TodoItem> GetById(string id)
    {
        _logger.LogInformation(LoggingEvents.GetItem, "Getting item {Id}", id);
        
        // Item lookup code removed.
        
        if (item == null)
        {
            _logger.LogWarning(LoggingEvents.GetItemNotFound, "GetById({Id}) NOT FOUND", id);
            return NotFound();
        }
        
        return item;
    }
}

Metode pengelogan seperti LogInformation mendukung sejumlah bidang. Bidang-bidang ini biasanya digunakan untuk membuat pesan string, tetapi beberapa penyedia pengelogan mengirimkannya ke penyimpanan data sebagai bidang terpisah. Fitur ini memungkinkan penyedia pengelogan untuk menerapkan pengelogan semantik, juga dikenal sebagai pengelogan terstruktur.

Untuk informasi selengkapnya, lihat Pengelogan .NET Core dan ASP.NET Core.

Perutean

Rute adalah pola URL yang dipetakan ke handler. Handler biasanya adalah Razor halaman, metode tindakan dalam pengontrol MVC, atau middleware. perutean ASP.NET Core memberi Anda kontrol atas URL yang digunakan oleh aplikasi Anda.

Untuk informasi selengkapnya, lihat Perutean di ASP.NET Core.

Penanganan kesalahan

ASP.NET Core memiliki fitur bawaan untuk menangani kesalahan, seperti:

  • Halaman pengecualian pengembang
  • Halaman kesalahan kustom
  • Halaman kode status statis
  • Penanganan pengecualian startup

Untuk informasi selengkapnya, lihat Menangani kesalahan di ASP.NET Core.

Buat permintaan HTTP

Implementasi IHttpClientFactory tersedia untuk membuat HttpClient instans. Pabrik:

  • Menyediakan lokasi pusat untuk penamaan dan konfigurasi instans HttpClient logis. Misalnya, daftarkan dan konfigurasikan klien github untuk mengakses GitHub. Mendaftarkan dan mengonfigurasi klien default untuk tujuan lain.
  • Mendukung pendaftaran dan penautan beberapa penangan delegasi untuk membangun alur middleware permintaan keluar. Pola ini mirip dengan alur middleware masuk ASP.NET Core. Pola ini menyediakan mekanisme untuk mengelola masalah lintas pemotongan untuk permintaan HTTP, termasuk penembolokan, penanganan kesalahan, serialisasi, dan pengelogan.
  • Terintegrasi dengan Polly, pustaka pihak ketiga populer untuk penanganan kesalahan sementara.
  • Mengelola pengumpulan dan masa pakai instans yang mendasarinya HttpClientHandler untuk menghindari masalah DNS umum yang terjadi saat mengelola HttpClient masa pakai secara manual.
  • Menambahkan pengalaman pengelogan yang dapat dikonfigurasi melalui ILogger untuk semua permintaan yang dikirim melalui klien yang dibuat oleh pabrik.

Untuk informasi selengkapnya, lihat Membuat permintaan HTTP menggunakan IHttpClientFactory di ASP.NET Core.

Akar konten

Akar konten adalah jalur dasar untuk:

  • Yang dapat dieksekusi menghosting aplikasi (.exe).
  • Rakitan yang dikompilasi yang membentuk aplikasi (.dll).
  • File konten yang digunakan oleh aplikasi, seperti:
    • Razor file (.cshtml, .razor)
    • File konfigurasi (.json, .xml)
    • File data (.db)
  • Akar Web, biasanya folder wwwroot.

Selama pengembangan, akar konten default ke direktori akar proyek. Direktori ini juga merupakan jalur dasar untuk file konten aplikasi dan akar Web. Tentukan akar konten yang berbeda dengan mengatur jalurnya saat membangun host. Untuk informasi selengkapnya, lihat Akar konten.

Akar web

Akar web adalah jalur dasar untuk file sumber daya statis publik, seperti:

  • Lembar Gaya (.css)
  • JavaScript (.js)
  • Gambar (.png, .jpg)

Secara default, file statis hanya dilayani dari direktori akar web dan sub-direktorinya. Jalur akar web default ke {content root}/wwwroot. Tentukan akar web yang berbeda dengan mengatur jalurnya saat membangun host. Untuk informasi selengkapnya, lihat Akar web.

Cegah penerbitan file di wwwroot dengan <item proyek Konten> dalam file proyek. Contoh berikut mencegah penerbitan konten di wwwroot/local dan sub-direktorinya:

<ItemGroup>
  <Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>

Dalam Razor.cshtml file, tilde-slash (~/) menunjuk ke akar web. Jalur yang dimulai dengan ~/ disebut sebagai jalur virtual.

Untuk informasi selengkapnya, lihat File statis di ASP.NET Core.