

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menginstrumentasikan permintaan HTTP yang masuk dengan X-Ray SDK for .NET
<a name="xray-sdk-dotnet-messagehandler"></a>

**catatan**  
Pemberitahuan SDK/Daemon Pemeliharaan X-Ray - Pada 25 Februari 2026, AWS SDKs/Daemon X-Ray akan memasuki mode pemeliharaan, di mana AWS akan membatasi rilis X-Ray SDK dan Daemon untuk mengatasi masalah keamanan saja. Untuk informasi selengkapnya tentang garis waktu dukungan, lihat[Garis waktu Dukungan X-Ray SDK dan Daemon](xray-sdk-daemon-timeline.md). Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi lebih lanjut tentang migrasi ke OpenTelemetry, lihat [Migrasi dari instrumentasi X-Ray ke instrumentasi](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html). OpenTelemetry 

Anda dapat menggunakan X-Ray SDK untuk melacak permintaan HTTP masuk yang disajikan aplikasi Anda pada instans EC2 di Amazon EC2,, AWS Elastic Beanstalk atau Amazon ECS.

Gunakan pengendali pesan untuk menginstrumentasi permintaan HTTP yang masuk. Saat Anda menambahkan pengendali pesan X-Ray ke aplikasi Anda, X-Ray SDK for .NET membuat segmen untuk setiap permintaan yang dibuat sampel. Segmen ini meliputi waktu, metode, dan disposisi permintaan HTTP. Instrumentasi tambahan membuat subsegmen pada segmen ini.

**catatan**  
Untuk AWS Lambda fungsi, Lambda membuat segmen untuk setiap permintaan sampel. Untuk informasi selengkapnya, lihat [AWS Lambda dan AWS X-Ray](xray-services-lambda.md).

Setiap segmen memiliki nama yang mengidentifikasi aplikasi Anda dalam peta layanan. Segmen dapat diberi nama secara statis, atau Anda dapat mengonfigurasi SDK untuk nama itu secara dinamis berdasarkan header host dalam permintaan masuk. Penamaan dinamis memungkinkan Anda mengelompokkan pelacakan berdasarkan nama domain dalam permintaan, dan menerapkan nama default jika nama tersebut tidak cocok dengan pola yang diharapkan (misalnya, jika header host ditiru).

**Permintaan yang Diteruskan**  
Jika penyeimbang beban atau perantara lainnya meneruskan permintaan ke aplikasi Anda, X-Ray akan mengambil IP klien dari header `X-Forwarded-For` dalam permintaan bukan dari sumber IP dalam paket IP. IP klien yang tercatat untuk permintaan yang diteruskan dapat dipalsukan, jadi tidak boleh dipercaya.

Pengendali pesan membuat segmen untuk setiap permintaan yang masuk dengan blok `http` yang berisi informasi berikut:
+ **Metode HTTP** – DAPATKAN, POSTING, LETAKKAN, HAPUS, dll.
+ **Alamat klien** – Alamat IP klien yang mengirim permintaan.
+ **Kode respons** – Kode respons HTTP untuk permintaan yang selesai.
+ **Timing** – Waktu mulai (saat permintaan diterima) dan waktu akhir (saat respons dikirim).
+ **Agen pengguna** — `user-agent` dari permintaan.
+ **Panjang konten** — `content-length` dari respons.

**Topics**
+ [Menginstrumentasikan permintaan masuk (.NET)](#xray-sdk-dotnet-messagehandler-globalasax)
+ [Menginstrumentasikan permintaan yang masuk (.NET Core)](#xray-sdk-dotnet-messagehandler-startupcs)
+ [Mengonfigurasi strategi penamaan segmen](#xray-sdk-dotnet-messagehandler-naming)

## Menginstrumentasikan permintaan masuk (.NET)
<a name="xray-sdk-dotnet-messagehandler-globalasax"></a>

Untuk menginstrumentasi permintaan yang dilayani oleh aplikasi Anda, panggil `RegisterXRay` di dalam metode `Init` dari file `global.asax` Anda.

**Example global.asax - pengendali pesan**  

```
using System.Web.Http;
using [Amazon.XRay.Recorder.Handlers.AspNet](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/N_Amazon_XRay_Recorder_Handlers_AspNet.htm);

namespace SampleEBWebApplication
{
  public class MvcApplication : System.Web.HttpApplication
  {
    public override void Init()
    {
      base.Init();
      AWSXRayASPNET.RegisterXRay(this, "MyApp");
    }
  }
}
```

## Menginstrumentasikan permintaan yang masuk (.NET Core)
<a name="xray-sdk-dotnet-messagehandler-startupcs"></a>

Untuk menginstrumentasi permintaan yang dilayani oleh aplikasi Anda, panggil metode `UseXRay` sebelum middleware lain dalam metode `Configure` kelas Startup Anda, karena middleware X-Ray idealnya harus menjadi middleware pertama yang memproses permintaan dan middleware terakhir yang memproses respons dalam alur.

**catatan**  
.NET Core 2.0, jika Anda memiliki metode `UseExceptionHandler` dalam aplikasi, pastikan untuk memanggil `UseXRay` setelah metode `UseExceptionHandler` guna memastikan bahwa pengecualian tercatat.

**Example Startup.cs**  

```
using Microsoft.AspNetCore.Builder;

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    app.UseXRay("MyApp");
    // additional middleware
    ...
  }
```

```
using Microsoft.AspNetCore.Builder;

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    app.UseExceptionHandler("/Error");
    app.UseXRay("MyApp");
    // additional middleware
    ...
  }
```

Metode `UseXRay` juga dapat mengambil [objek konfigurasi](xray-sdk-dotnet-configuration.md) sebagai argumen kedua.

```
app.UseXRay("MyApp", configuration);
```

## Mengonfigurasi strategi penamaan segmen
<a name="xray-sdk-dotnet-messagehandler-naming"></a>

AWS X-Ray menggunakan *nama layanan* untuk mengidentifikasi aplikasi Anda dan membedakannya dari aplikasi lain, database, eksternal APIs, dan AWS sumber daya yang digunakan aplikasi Anda. Saat SDK X-Ray membuat segmen untuk permintaan masuk, SDK akan mencatat nama layanan aplikasi Anda di [kolom nama](xray-api-segmentdocuments.md#api-segmentdocuments-fields).

SDK X-Ray dapat memberi nama segmen setelah nama host di header permintaan HTTP. Namun, header ini dapat ditiru, yang dapat mengakibatkan simpul tak terduga di peta layanan Anda. Untuk mencegah SDK dari penamaan segmen salah karena permintaan dengan header host palsu, Anda harus menentukan nama default untuk permintaan masuk.

Jika aplikasi Anda menyuguhkan permintaan untuk beberapa domain, Anda dapat mengonfigurasi SDK untuk menggunakan strategi penamaan dinamis untuk mencerminkan ini dalam nama segmen. Strategi penamaan dinamis mengizinkan SDK menggunakan nama host untuk permintaan yang sesuai dengan pola yang diharapkan, dan menerapkan nama default untuk permintaan yang tidak sesuai.

Misalnya, Anda boleh memiliki satu aplikasi yang melayani permintaan untuk tiga subdomain– `www.example.com`, `api.example.com`, dan `static.example.com`. Anda dapat menggunakan strategi penamaan dinamis dengan pola `*.example.com` untuk mengidentifikasi segmen untuk setiap subdomain dengan nama yang berbeda, mengakibatkan tiga simpul layanan pada peta layanan. Jika aplikasi Anda menerima permintaan dengan nama host yang tidak cocok dengan polanya, Anda akan melihat simpul keempat di peta layanan dengan nama cadangan yang Anda tentukan.

Untuk menggunakan nama yang sama untuk semua segmen permintaan, tentukan nama aplikasi Anda saat menginisialisasi pengendali pesan, seperti yang ditunjukkan di [bagian sebelumnya](#xray-sdk-dotnet-messagehandler-globalasax). Tindakan ini memiliki efek yang sama seperti membuat [https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/T_Amazon_XRay_Recorder_Core_Strategies_FixedSegmentNamingStrategy.htm](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/T_Amazon_XRay_Recorder_Core_Strategies_FixedSegmentNamingStrategy.htm) dan meneruskannya ke metode `RegisterXRay`.

```
AWSXRayASPNET.RegisterXRay(this, new FixedSegmentNamingStrategy("MyApp"));
```

**catatan**  
Anda dapat mengganti nama layanan default yang Anda tentukan dalam kode dengan [variabel lingkungan](xray-sdk-dotnet-configuration.md#xray-sdk-dotnet-configuration-envvars) `AWS_XRAY_TRACING_NAME`.

Strategi penamaan dinamis menentukan pola yang harus cocok dengan nama host, dan nama default yang digunakan jika nama host dalam permintaan HTTP tidak cocok dengan pola tersebut. Untuk memberi nama segmen secara dinamis, buat [https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/T_Amazon_XRay_Recorder_Core_Strategies_DynamicSegmentNamingStrategy.htm](https://docs.aws.amazon.com/xray-sdk-for-dotnet/latest/reference/html/T_Amazon_XRay_Recorder_Core_Strategies_DynamicSegmentNamingStrategy.htm) dan teruskan ke metode `RegisterXRay`.

```
AWSXRayASPNET.RegisterXRay(this, new DynamicSegmentNamingStrategy("MyApp", "*.example.com"));
```