ASP.NET Core temelleri
bu makalede, ASP.NET Core uygulamaları geliştirmeyi anlamak için temel konulara genel bakış sunulmaktadır.
Başlangıç sınıfı
StartupSınıfı şu konumda:
- Uygulamanın gerektirdiği hizmetler yapılandırıldı.
- Uygulamanın istek işleme işlem hattı, bir dizi ara yazılım bileşeni olarak tanımlanmıştır.
Örnek bir sınıf aşağıda verilmiştir 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();
});
}
}
Daha fazla bilgi için bkz. ASP.NET Core 'de uygulama başlatma.
Bağımlılık ekleme (hizmetler)
ASP.NET Core, yapılandırılmış hizmetleri bir uygulama genelinde kullanılabilir hale getiren yerleşik bağımlılık ekleme (dı) çerçevesini içerir. Örneğin, bir günlük bileşeni bir hizmettir.
Hizmetleri yapılandırmak (veya kaydettirmek) için kod Startup.ConfigureServices yöntemine eklenmiştir. Örnek:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddControllersWithViews();
services.AddRazorPages();
}
Hizmetler genellikle Oluşturucu Ekleme kullanılarak dı 'den çözümlenir. Oluşturucu ekleme ile bir sınıf, gerekli türde veya bir arabirimin Oluşturucu parametresini bildirir. Dı çerçevesi, çalışma zamanında bu hizmetin bir örneğini sağlar.
Aşağıdaki örnek, from kaynağından çözümlemek için Oluşturucu Ekleme kullanır RazorPagesMovieContext :
public class IndexModel : PageModel
{
private readonly RazorPagesMovieContext _context;
public IndexModel(RazorPagesMovieContext context)
{
_context = context;
}
// ...
public async Task OnGetAsync()
{
Movies = await _context.Movies.ToListAsync();
}
}
Yerleşik bir denetim (IOC) kapsayıcısının bir uygulamanın ihtiyaçlarını karşılamıyorsa, bunun yerine üçüncü taraf bir IOC kapsayıcısı kullanılabilir.
Daha fazla bilgi için bkz. ASP.NET Core bağımlılık ekleme.
Ara yazılım
İstek işleme işlem hattı, bir dizi ara yazılım bileşeni olarak oluşur. Her bileşen bir üzerinde işlemler gerçekleştirir HttpContext ve sıradaki bir sonraki ara yazılımı çağırır ya da isteği sonlandırır.
Kurala göre, yöntemde bir genişletme yöntemi çağırarak işlem hattına bir ara yazılım bileşeni eklenir Use... Startup.Configure . Örneğin, statik dosyaları işlemeyi etkinleştirmek için çağırın UseStaticFiles .
Aşağıdaki örnekte bir istek işleme işlem hattı yapılandırılır:
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
ASP.NET Core zengin bir yerleşik ara yazılım kümesi içerir. Özel ara yazılım bileşenleri de yazılabilir.
Daha fazla bilgi için bkz. ASP.NET Core Middleware.
Host
başlangıçta ASP.NET Core bir uygulama bir konak oluşturur. Konak, uygulamanın tüm kaynaklarını kapsüller, örneğin:
- Bir HTTP sunucusu uygulama
- Ara yazılım bileşenleri
- Günlüğe Kaydetme
- Bağımlılık ekleme (dı) Hizmetleri
- Yapılandırma
İki farklı ana bilgisayar vardır:
- .NET genel ana bilgisayar
- ASP.NET Core Web ana bilgisayarı
.NET genel ana bilgisayarı önerilir. ASP.NET Core Web konağı yalnızca geriye dönük uyumluluk için kullanılabilir.
Aşağıdaki örnek bir .NET genel ana bilgisayarı oluşturur:
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>();
});
}
CreateDefaultBuilderVe ConfigureWebHostDefaults yöntemleri, bir ana bilgisayarı varsayılan bir seçenek kümesiyle yapılandırır, örneğin:
- KestrelWeb sunucusu olarak kullanın ve IIS tümleştirmesini etkinleştirin.
- Yapılandırmayı yükleme appsettings.json , appSettings. { Ortam adı}. JSON, ortam değişkenleri, komut satırı bağımsız değişkenleri ve diğer yapılandırma kaynakları.
- Günlüğe kaydetme çıkışını konsola ve hata ayıklama sağlayıcılarına gönderin.
Daha fazla bilgi için bkz. ASP.NET Core .NET genel ana bilgisayarı.
Web dışı senaryolar
Genel ana bilgisayar, diğer uygulama türlerinin günlüğe kaydetme, bağımlılık ekleme (dı), yapılandırma ve uygulama ömür yönetimi gibi çapraz kesme çerçevesi uzantıları kullanmasına izin verir. Daha fazla bilgi için ASP.NET Core .NET genel ana bilgisayarı ve ASP.NET Core içinde barındırılan hizmetlerle arka plan görevleri bölümlerine bakın.
Sunucular
bir ASP.NET Core uygulaması http isteklerini dinlemek için http sunucu uygulamasını kullanır. Sunucu, bir öğesine oluşturulan istek özellikleri kümesi olarak uygulamaya istekleri ister HttpContext .
ASP.NET Core aşağıdaki sunucu uygulamalarını sağlar:
- Kestrel , platformlar arası bir Web sunucusudur. Kestrel genellikle IISkullanılarak ters bir ara sunucu yapılandırmasında çalıştırılır. ASP.NET Core 2,0 veya üzeri sürümlerde, Kestrel doğrudan Internet 'e açık olan bir genel kullanıma yönelik uç sunucu olarak çalıştırılabilir.
- ııs HTTP sunucusu , ııs kullanan Windows için bir sunucusudur. bu sunucu ile, ASP.NET Core uygulaması ve ııs aynı işlemde çalışır.
- HTTP.sys , ııs ile kullanılmayan Windows için bir sunucusudur.
Daha fazla bilgi için bkz. ASP.NET Core'de web sunucusu uygulamaları.
Yapılandırma
ASP.NET Core, ayarları sıralı bir yapılandırma sağlayıcıları 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ı, 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ı yazın.
varsayılanolarak, ASP.NET Core uygulamalar appsettings.json , ortam değişkenleri, komut satırı ve daha fazlasını okumak üzere yapılandırılır. Uygulamanın yapılandırması yüklendiğinde, ortam değişkenlerinin değerleri, değerlerini geçersiz kılar appsettings.json .
İlgili yapılandırma değerlerini okumak için tercih edilen yol, Seçenekler modelinikullanmaktır. Daha fazla bilgi için bkz. Seçenekler modelini kullanarak hiyerarşik yapılandırma verilerini bağlama.
Parolalar gibi gizli yapılandırma verilerini yönetmek için, .NET Core, gizli dizi Yöneticisisağlar. Üretim gizli dizileri için Azure Key Vaultönerilir.
Daha fazla bilgi için bkz. ASP.NET Core'de yapılandırma.
Ortamlar
, Ve gibi yürütme ortamları Development Staging Production ASP.NET Core ilk sınıf kavramlardır. Ortam değişkenini ayarlayarak bir uygulamanın çalıştığı ortamı belirtin ASPNETCORE_ENVIRONMENT . ASP.NET Core, uygulamanın başlangıcında bu ortam değişkenini okur ve değeri bir IWebHostEnvironment uygulamada depolar. Bu uygulama, bağımlılık ekleme (dı) yoluyla bir uygulamada herhangi bir yerde kullanılabilir.
Aşağıdaki örnek, uygulamayı ortamda çalışırken ayrıntılı hata bilgileri sunacak şekilde yapılandırır Development :
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();
});
}
Daha fazla bilgi için bkz. ASP.NET Core'da birden çok ortam kullanma.
Günlüğe Kaydetme
ASP.NET Core, çeşitli yerleşik ve üçüncü taraf günlük sağlayıcılarıyla birlikte çalışarak bir günlüğe kaydetme apı 'sini destekler. Kullanılabilir sağlayıcılar şunları içerir:
- Konsol
- Hata Ayıklama
- Windows olay Izleme
- Windows Olay günlüğü
- TraceSource
- Azure App Service
- Azure Application Insights
Günlükleri oluşturmak için bağımlılık eklemeden ILogger<TCategoryName> (DI) ve gibi günlük kaydetme yöntemlerinden bir hizmeti LogInformation çözümleyebilirsiniz. Örnek:
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;
}
}
Gibi günlüğe kaydetme yöntemleri LogInformation herhangi bir sayıda alanı destekler. Bu alanlar genellikle bir ileti oluşturmak için kullanılır, ancak bazı günlük sağlayıcıları bunları ayrı alanlar string olarak bir veri deposuna gönderir. Bu özellik, günlük sağlayıcılarının yapılandırılmış günlük olarak da bilinen semantik günlük kaydını uygulamasına mümkün olur.
Daha fazla bilgi için bkz. .NET Core ve ASP.NET Core'da günlük.
Yönlendirme
Yol, işleyiciye eşlenen bir URL desenidir. İşleyici genellikle bir Razor sayfa, bir MVC denetleyicisinde eylem yöntemi veya ara yazılımdır. ASP.NET Core yönlendirme, uygulamanız tarafından kullanılan URL'ler üzerinde denetim sağlar.
Daha fazla bilgi için bkz. ASP.NET Core'de yönlendirme.
Hata işleme
ASP.NET Core, hataları işlemeye için yerleşik özelliklere sahiptir, örneğin:
- Geliştirici özel durum sayfası
- Özel hata sayfaları
- Statik durum kodu sayfaları
- Başlangıç özel durum işleme
Daha fazla bilgi için bkz. ASP.NET Core hataları işleme.
HTTP isteğinde bulunma
örnekleri oluşturmak IHttpClientFactory için bir uygulaması HttpClient kullanılabilir. Fabrika:
- Mantıksal örnekleri adlandırmak ve yapılandırmak için merkezi bir
HttpClientkonum sağlar. Örneğin, bir github istemcisini kaydederek erişim için GitHub. Varsayılan istemciyi başka amaçlarla kaydetme ve yapılandırma. - Giden istek ara yazılım işlem hattı oluşturmak için birden çok görev için işleyicinin kaydını ve zincirlesini destekler. Bu düzen, ASP.NET Core ara yazılım işlem hattına benzer. Desen, önbelleğe alma, hata işleme, serileştirme ve günlüğe kaydetme gibi HTTP isteklerine ilişkin çapraz kesme endişelerini 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ştirilmiştir.
- Yaşam sürelerini el ile yönetirken oluşan yaygın DNS sorunlarından kaçınmak için temel alınan örneklerin havuz
HttpClientHandlerve yaşamHttpClientsürelerini yönetir. - Fabrika tarafından oluşturulan istemciler aracılığıyla gönderilen ILogger tüm istekler için aracılığıyla yapılandırılabilir bir günlüğe kaydetme deneyimi ekler.
Daha fazla bilgi için bkz. ASP.NET Core 'de ıhttpclientfactory kullanarak HTTP istekleri yapın.
İçerik kökü
İçerik kökü aşağıdakilerin temel yoludur:
- Uygulamayı barındıran yürütülebilir dosya (.exe).
- Uygulamayı derlenmiş derlemeler (.dll).
- Uygulama tarafından kullanılan içerik dosyaları, örneğin:
- Razor files (.cshtml, .razor)
- Yapılandırma dosyaları (.json, .xml)
- Veri dosyaları (.db)
- Web kökü, genellikle wwwroot klasörüdür.
Geliştirme sırasında, içerik kökü varsayılan olarak projenin kök dizinine kullanılır. Bu dizin aynı zamanda hem uygulamanın içerik dosyalarının hem de Web kökünün temel yoludur. Ana bilgisayarını yapılandırarak yolunu ayarlayacak şekilde farklı bir içerik kökü belirtin. Daha fazla bilgi için bkz. İçerik kökü.
Web kökü
Web kökü, genel, statik kaynak dosyalarının temel yoludur, örneğin:
- Stil sayfaları (.css)
- JavaScript (.js)
- Görüntüler (.png, .jpg)
Varsayılan olarak, statik dosyalar yalnızca web kök dizininden ve alt dizinlerinden hizmet edilir. Web kök yolu varsayılan olarak {content root}/wwwroot olur. Ana bilgisayarını yapılandırarak yolunu ayarlayacak şekilde farklı bir web kökü belirtin. Daha fazla bilgi için bkz. Web kökü.
Proje dosyasındaki proje öğesiyle wwwroot'da dosya yayımlamayı önle. <Content> Aşağıdaki örnek, wwwroot/local ve onun alt dizinlerinde içerik yayımlamayı önler:
<ItemGroup>
<Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>
Razor .cshtml dosyalarında tilde-slash ( ~/ ) web kökünü ifade ediyor. ile başlayan bir ~/ yol, sanal yol olarak adlandırılır.
Daha fazla bilgi için bkz. ASP.NET Core'daki statik dosyalar.
Bu makale, uygulama geliştirmeyle ilgili önemli konulara genel ASP.NET Core içerir.
Başlangıç sınıfı
sınıfı Startup şu yerdedir:
- Uygulama için gereken hizmetler yapılandırılır.
- İstek işleme işlem hattı tanımlanır.
Hizmetler, uygulama tarafından kullanılan bileşenlerdir. Örneğin, günlük bileşeni bir hizmettir. Hizmetleri yapılandırmak (veya kaydetmek) için kod yöntemine Startup.ConfigureServices eklenir.
İstek işleme işlem hattı bir dizi ara yazılım bileşeni olarak oluşur. Örneğin, bir ara yazılım statik dosyalar için istekleri işebilir veya HTTP isteklerini HTTPS'ye yönlendirebilir. Her ara yazılım bir üzerinde zaman uyumsuz işlemler gerçekleştirir ve ardından işlem hattında bir sonraki ara yazılımı çağırır HttpContext veya isteği sonlandırılır. İstek işleme işlem hattını yapılandırma kodu yöntemine Startup.Configure eklenir.
Örnek bir sınıf şu Startup şekildedir:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<MovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MovieDb")));
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
}
Daha fazla bilgi için bkz. ASP.NET Core 'de uygulama başlatma.
Bağımlılık ekleme (hizmetler)
ASP.NET Core, yapılandırılan hizmetleri uygulamanın sınıflarında kullanılabilir yapan yerleşik bir bağımlılık ekleme (DI) çerçevesine sahip olur. Bir sınıftaki bir hizmetin örneğini elde etmek için gerekli türde bir parametreye sahip bir oluşturucu oluşturmaktır. parametresi hizmet türü veya arabirim olabilir. DI sistemi hizmeti çalışma zamanında sağlar.
Burada, bir bağlam nesnesi elde etmek için DI kullanan Entity Framework Core ve ardından ve sonra da bu sınıfa bakabilirsiniz. Vurgulanan satır, oluşturucu ekleme örneğidir:
public class IndexModel : PageModel
{
private readonly RazorPagesMovieContext _context;
public IndexModel(RazorPagesMovieContext context)
{
_context = context;
}
// ...
public async Task OnGetAsync()
{
Movies = await _context.Movies.ToListAsync();
}
}
DI yerleşik olarak çalışırken, tercih ederseniz bir üçüncü taraf Denetimin Ters Çevirmesi (IoC) kapsayıcısı takacak şekilde tasarlanmıştır.
Daha fazla bilgi için bkz. ASP.NET Core bağımlılık ekleme.
Ara yazılım
İstek işleme işlem hattı bir dizi ara yazılım bileşeni olarak oluşur. Her bileşen bir üzerinde zaman uyumsuz işlemler gerçekleştirir ve ardından işlem hattında bir sonraki ara yazılımı çağırır HttpContext veya isteği sonlandırılır.
Kural gereği, yönteminde genişletme yöntemiyle bir ara yazılım bileşeni işlem Use... hattına Startup.Configure eklenir. Örneğin, statik dosyaların işlemeyi etkinleştirmek için UseStaticFiles çağrısı.
Aşağıdaki örnekte vurgulanan kod, istek işleme işlem hattını yapılandırıyor:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<MovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MovieDb")));
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
}
ASP.NET Core zengin bir yerleşik ara yazılım kümesi içerir ve özel ara yazılım yazabilir.
Daha fazla bilgi için bkz. ASP.NET Core Middleware.
Host
Bir ASP.NET Core, başlangıçta bir konak derlemesi sağlar. Konak, uygulamanın aşağıdakiler gibi tüm kaynaklarını kapsülleye bir nesnedir:
- HTTP sunucusu uygulaması
- Ara yazılım bileşenleri
- Günlüğe Kaydetme
- Di
- Yapılandırma
Uygulamanın bağımlı olan tüm kaynaklarını tek bir nesneye dahil etmek için temel neden, yaşam süresi yönetimidir: uygulama başlatma ve yetkisiz kapatma üzerinde denetim.
İki konak kullanılabilir: Web Ana Bilgisayarı ve Genel Ana Bilgisayar. 2.x ASP.NET Core de, Genel Ana Bilgisayar yalnızca web dışı senaryolara göredir.
Konak oluşturma kodu Program.Main içindedir:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
yöntemi, CreateDefaultBuilder aşağıdakiler gibi yaygın olarak kullanılan seçeneklerle bir konak yapılandırıyor:
- Web Kestrel sunucusu olarak kullanın ve IIS tümleştirmesini etkinleştirin.
- appsettings.json ,appsettings.{ üzerinden yapılandırmayı yükleme Ortam Adı}.json, ortam değişkenleri, komut satırı bağımsız değişkenleri ve diğer yapılandırma kaynakları.
- Günlüğe kaydetme çıkışını konsola ve hata ayıklama sağlayıcılarına gönderin.
Daha fazla bilgi için bkz. ASP.NET Core Web ana bilgisayarı.
Web olmayan senaryolar
Genel Ana Bilgisayar, diğer uygulama türlerinin günlüğe kaydetme, bağımlılık ekleme (DI), yapılandırma ve uygulama yaşam süresi yönetimi gibi çapraz kesme çerçeve uzantılarını kullanmalarını sağlar. Daha fazla bilgi için ASP.NET Core .NET genel ana bilgisayarı ve ASP.NET Core içinde barındırılan hizmetlerle arka plan görevleri bölümlerine bakın.
Sunucular
Bir ASP.NET Core, HTTP isteklerini dinlemek için bir HTTP sunucusu uygulaması kullanır. Sunucu, uygulamaya yapılan istekleri bir içinde oluşan istek özellikleri kümesi olarak ortaya HttpContext çıkar.
ASP.NET Core aşağıdaki sunucu uygulamaları sağlar:
- Kestrel , platformlar arası bir web sunucusudur. Kestrel, genellikle IIS kullanılarak ters ara sunucu yapılandırmasında yapılandırmasını çalıştırmaktadır. Kestrel doğrudan İnternet'e açık olan genel bir uç sunucu olarak çalıştırabilirsiniz.
- IIS HTTP Sunucusu, IIS kullanan windows için bir sunucudur. Bu sunucuyla, ASP.NET Core ve IIS aynı işlemde çalıştır.
- HTTP.sys, IIS ile Windows bir sunucudur.
ASP.NET Core aşağıdaki sunucu uygulamaları sağlar:
- Kestrel , platformlar arası bir web sunucusudur. Kestrel, genellikle IIS kullanılarak ters ara sunucu yapılandırmasında yapılandırmasını çalıştırmaktadır. Kestrel doğrudan İnternet'e açık olan genel bir uç sunucu olarak çalıştırabilirsiniz.
- HTTP.sys, IIS ile Windows bir sunucudur.
Daha fazla bilgi için bkz. ASP.NET Core'de web sunucusu uygulamaları.
Yapılandırma
ASP.NET Core, ayarları bir dizi yapılandırma sağlayıcısından ad-değer çiftleri olarak alan bir yapılandırma çerçevesi sağlar. .json dosyaları, uygulama dosyaları, ortam değişkenleri ve komut satırı bağımsız değişkenleri.xmlgibi çeşitli kaynaklar için yerleşik yapılandırma sağlayıcıları vardır. Ayrıca özel yapılandırma sağlayıcıları da yazabilirsiniz.
Örneğin, yapılandırmanın ve ortam değişkenlerinden geldiği appsettings.json belirtebilirsiniz. Ardından ConnectionString değeri isten geldiğinde, çerçeve ilk olarak dosyada appsettings.json görünüyor. Değer burada ancak aynı zamanda bir ortam değişkeninde bulunursa, ortam değişkeninin değeri öncelikli olur.
.NET Core, parolalar gibi gizli yapılandırma verilerini yönetmek için bir Gizli Parola Yöneticisi aracı sağlar. Üretim gizli dizileri için Azure Key Vault.
Daha fazla bilgi için bkz. ASP.NET Core'de yapılandırma.
Seçenekler
Mümkün ASP.NET Core yapılandırma değerlerini depolamak ve almak için seçenekler desenini izler. Seçenekler düzeni, ilgili ayar gruplarını temsil etmek için sınıfları kullanır.
Örneğin, aşağıdaki kod WebSockets seçeneklerini ayarlar:
var options = new WebSocketOptions
{
KeepAliveInterval = TimeSpan.FromSeconds(120),
ReceiveBufferSize = 4096
};
app.UseWebSockets(options);
Daha fazla bilgi için bkz. ASP.NET Core'da seçenek deseni.
Ortamlar
Geliştirme, Hazırlama ve Üretim gibi yürütme ortamları, sanal ortamda birinci sınıf bir ASP.NET Core. Ortam değişkenlerini ayarerek bir uygulamanın içinde çalıştır olduğu ortamı ASPNETCORE_ENVIRONMENT belirtebilirsiniz. ASP.NET Core, uygulama başlangıcında bu ortam değişkenlerini okur ve değeri bir uygulamada IHostingEnvironment depolar. Ortam nesnesi, DI aracılığıyla uygulamanın herhangi bir yerinde kullanılabilir.
sınıfından aşağıdaki örnek Startup kod, uygulamayı yalnızca geliştirme aşamasında çalıştırıldığında ayrıntılı hata bilgileri sağlayacak şekilde yapılandırıyor:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
Daha fazla bilgi için bkz. ASP.NET Core'da birden çok ortam kullanma.
Günlüğe Kaydetme
ASP.NET Core, çeşitli yerleşik ve üçüncü taraf günlük sağlayıcılarıyla çalışan bir günlük API'sini destekler. Kullanılabilir sağlayıcılar aşağıdakileri içerir:
- Konsol
- Hata Ayıklama
- Windows'da Olay İzleme
- Windows Olay Günlüğü
- TraceSource
- Azure App Service
- Azure Application Insights
DI'den bir nesnesi edinerek ve günlük yöntemlerini çağırarak bir uygulamanın ILogger kodunda herhangi bir yerden günlükler yazın.
Oluşturucu eklemesi ve günlüğe kaydetme yöntemi ILogger çağrılarının vurgulanmış olduğu bir nesnesini kullanan örnek kod burada ve burada ve ardından ve ve ardından 100000000000000000000000000000000000000
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;
}
}
Arabirim, ILogger günlük sağlayıcısına herhangi bir sayıda alan geçmenizi sağlar. Alanlar genellikle bir ileti dizesi oluşturmak için kullanılır, ancak sağlayıcı bunları bir veri deposuna ayrı alanlar olarak da gönderebilir. Bu özellik, günlük sağlayıcılarının yapılandırılmış günlük olarak da bilinen semantik günlük kaydını uygulamasına mümkün olur.
Daha fazla bilgi için bkz. .NET Core ve ASP.NET Core'da günlük.
Yönlendirme
Yol, işleyiciye eşlenen bir URL desenidir. İşleyici genellikle bir Razor sayfa, bir MVC denetleyicisinde eylem yöntemi veya ara yazılımdır. ASP.NET Core yönlendirme, uygulamanız tarafından kullanılan URL'ler üzerinde denetim sağlar.
Daha fazla bilgi için bkz. ASP.NET Core'de yönlendirme.
Hata işleme
ASP.NET Core, hataları işlemeye için yerleşik özelliklere sahiptir, örneğin:
- Geliştirici özel durum sayfası
- Özel hata sayfaları
- Statik durum kodu sayfaları
- Başlangıç özel durum işleme
Daha fazla bilgi için bkz. ASP.NET Core hataları işleme.
HTTP isteğinde bulunma
örnekleri oluşturmak IHttpClientFactory için bir uygulaması HttpClient kullanılabilir. Fabrika:
- Mantıksal örnekleri adlandırmak ve yapılandırmak için merkezi bir
HttpClientkonum sağlar. Örneğin, bir github istemcisi depoya erişmek için kayded GitHub. Varsayılan istemci başka amaçlarla kaydedilene. - Giden istek ara yazılım işlem hattı oluşturmak için birden çok görev için işleyicinin kaydını ve zincirlesini destekler. Bu düzen, ASP.NET Core gelen ara yazılım ardışık düzenine benzer. Bu model, önbelleğe alma, hata işleme, serileştirme ve günlüğe kaydetme dahil olmak üzere HTTP istekleri etrafında çapraz 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.
HttpClientHandlerYaşam sürelerini el ile yönetirken gerçekleşen YAYGıN DNS sorunlarından kaçınmak için temeldeki örneklerin biriktirmesini ve ömrünü yönetirHttpClient.ILoggerFabrika tarafından oluşturulan istemciler aracılığıyla gönderilen tüm istekler için yapılandırılabilir bir günlüğe kaydetme deneyimi ekler (aracılığıyla).
Daha fazla bilgi için bkz. ASP.NET Core 'de ıhttpclientfactory kullanarak HTTP istekleri yapın.
İçerik kökü
İçerik kökü, için temel yoldur:
- Uygulamayı barındıran yürütülebilir dosya (.exe).
- Uygulamayı oluşturan derlenmiş derlemeler (.dll).
- Uygulama tarafından kullanılan kod olmayan içerik dosyaları, örneğin:
- Razor dosyalar (. cshtml, . Razor)
- Yapılandırma dosyaları (. JSON, .xml)
- Veri dosyaları (. db)
- Web kökü, genellikle yayınlanan Wwwroot klasörü.
Geliştirme sırasında:
- İçerik kökü, projenin kök dizinini varsayılan olarak belirler.
- Projenin kök dizini şunu oluşturmak için kullanılır:
- Uygulamanın, projenin kök dizinindeki kod olmayan içerik dosyalarının yolu.
- Web kökü, genellikle projenin kök dizinindeki Wwwroot klasörü.
Konak oluşturulurkenalternatif bir içerik kök yolu belirtilebilir. Daha fazla bilgi için bkz. ASP.NET Core Web ana bilgisayarı.
Web kökü
Web kökü, genel, kod olmayan statik kaynak dosyalarının temel yoludur, örneğin:
- Stil sayfaları (. css)
- JavaScript (.js)
- Görüntüler (.png .jpg)
Statik dosyalar yalnızca Web kök dizininden (ve alt dizinlerde) varsayılan olarak sunulur.
Web kök yolu varsayılan olarak {Content root}/Wwwroot olarak belirlenir, ancak konak oluşturulurkenfarklı bir Web kökü belirtilebilir. Daha fazla bilgi için bkz. Web root.
Proje dosyasındaki <Content> Proje öğesi ile Wwwroot 'da dosya yayımlamayı önleyin. Aşağıdaki örnek, Wwwroot/yerel dizin ve alt dizinlerde içerik yayımlamayı engeller:
<ItemGroup>
<Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>
Razor(. Cshtml) dosyalarında, tilde eğik çizgi ( ~/ ) Web köküne işaret eder. İle başlayan bir yol ~/ , sanal yol olarak adlandırılır.
Daha fazla bilgi için bkz. ASP.NET Core'daki statik dosyalar.