Minimal API uygulamalarında WebApplication ve WebApplicationBuilder
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.
WebApplication
Aşağıdaki kod bir ASP.NET Core şablonu tarafından oluşturulur:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Yukarıdaki kod, komut satırında veya Visual Studio'da Boş Web şablonu seçerek oluşturulabilir dotnet new web
.
Aşağıdaki kod, açıkça oluşturmadan bir WebApplication WebApplicationBuilder(app
) oluşturur:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
WebApplication.Create
önceden yapılandırılmış varsayılanlarla sınıfının yeni bir örneğini WebApplication başlatır.
WebApplication
aşağıdaki ara yazılımı Minimal API applications
belirli koşullara bağlı olarak otomatik olarak ekler:
UseDeveloperExceptionPage
, olduğundaHostingEnvironment
"Development"
ilk olarak eklenir.UseRouting
, kullanıcı kodu henüz çağrılmazsaUseRouting
ve örneğinapp.MapGet
yapılandırılmış uç noktalar varsa eklenir.UseEndpoints
, herhangi bir uç nokta yapılandırılırsa ara yazılım işlem hattının sonuna eklenir.UseAuthentication
kullanıcı kodu henüz çağrılmazsaUseAuthentication
ve hizmet sağlayıcısında algılanabilirseIAuthenticationSchemeProvider
hemen sonraUseRouting
eklenir.IAuthenticationSchemeProvider
kullanılırkenAddAuthentication
varsayılan olarak eklenir ve kullanılarak hizmetler algılanırIServiceProviderIsService
.UseAuthorization
, kullanıcı kodu henüz çağrılmazsaUseAuthorization
ve hizmet sağlayıcısında algılanabilirseIAuthorizationHandlerProvider
eklenir.IAuthorizationHandlerProvider
kullanılırkenAddAuthorization
varsayılan olarak eklenir ve kullanılarak hizmetler algılanırIServiceProviderIsService
.- Kullanıcı tarafından yapılandırılmış ara yazılım ve uç noktalar ile
UseEndpoints
arasınaUseRouting
eklenir.
Aşağıdaki kod, uygulamaya eklenen otomatik ara yazılımların etkili bir şekilde ürettiği koddur:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Bazı durumlarda, varsayılan ara yazılım yapılandırması uygulama için doğru değildir ve değişiklik gerektirir. Örneğin, UseCors ve UseAuthorizationöncesinde UseAuthentication çağrılmalıdır. Uygulamanın çağrısı UseAuthentication
UseAuthorization
ve çağrılıp çağrılmaması UseCors
gerekir:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Yol eşleştirme gerçekleşmeden önce ara yazılım çalıştırılmalıdır, UseRouting çağrılmalı ve ara yazılım çağrısından UseRouting
önce yerleştirilmelidir. UseEndpoints daha önce açıklandığı gibi otomatik olarak eklendiğinden bu durumda gerekli değildir:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Terminal ara yazılımı eklerken:
- Ara yazılım, sonrasında
UseEndpoints
eklenmelidir. - Terminal ara yazılımının doğru konuma yerleştirilebilmesi için uygulamanın araması
UseRouting
UseEndpoints
gerekir.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Terminal ara yazılımı, isteği hiçbir uç nokta işlemezse çalışan ara yazılımdır.
Bağlantı noktalarıyla çalışma
Visual Studio veya dotnet new
ile bir web uygulaması oluşturulduğunda, uygulamanın yanıt verdiği bağlantı noktalarını belirten bir Properties/launchSettings.json
dosya oluşturulur. Sonraki bağlantı noktası ayarı örneklerinde, uygulamayı Visual Studio'dan çalıştırmak bir hata iletişim kutusu Unable to connect to web server 'AppName'
döndürür. Visual Studio, içinde Properties/launchSettings.json
belirtilen bağlantı noktasını beklediğinden ancak uygulama tarafından app.Run("http://localhost:3000")
belirtilen bağlantı noktasını kullandığından bir hata döndürür. Komut satırından örnekleri değiştirerek aşağıdaki bağlantı noktasını çalıştırın.
Aşağıdaki bölümlerde uygulamanın yanıt verdiği bağlantı noktası ayarlanır.
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run("http://localhost:3000");
Önceki kodda uygulama bağlantı noktasına 3000
yanıt verir.
Birden çok bağlantı noktası
Aşağıdaki kodda uygulama ve 4000
bağlantı noktasına 3000
yanıt verir.
var app = WebApplication.Create(args);
app.Urls.Add("http://localhost:3000");
app.Urls.Add("http://localhost:4000");
app.MapGet("/", () => "Hello World");
app.Run();
Komut satırından bağlantı noktasını ayarlama
Aşağıdaki komut, uygulamanın bağlantı noktasına 7777
yanıt vermesini sağlar:
dotnet run --urls="https://localhost:7777"
Kestrel Uç nokta dosyada appsettings.json
da yapılandırılmışsa, appsettings.json
belirtilen dosya URL'si kullanılır. Daha fazla bilgi için bkz. Kestrel uç nokta yapılandırması
Bağlantı noktasını ortamdan okuma
Aşağıdaki kod, bağlantı noktasını ortamdan okur:
var app = WebApplication.Create(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "3000";
app.MapGet("/", () => "Hello World");
app.Run($"http://localhost:{port}");
Bağlantı noktasını ortamdan ayarlamanın tercih edilen yolu, aşağıdaki bölümde gösterilen ortam değişkenini kullanmaktır ASPNETCORE_URLS
.
ASPNETCORE_URLS ortam değişkeni aracılığıyla bağlantı noktalarını ayarlama
Ortam ASPNETCORE_URLS
değişkeni, bağlantı noktasını ayarlamak için kullanılabilir:
ASPNETCORE_URLS=http://localhost:3000
ASPNETCORE_URLS
birden çok URL'leri destekler:
ASPNETCORE_URLS=http://localhost:3000;https://localhost:5000
Ortamı kullanma hakkında daha fazla bilgi için bkz . ASP.NET Core'da birden çok ortam kullanma
Tüm arabirimlerde dinleme
Aşağıdaki örneklerde tüm arabirimlerde dinleme gösterilmektedir
http://*:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://*:3000");
app.MapGet("/", () => "Hello World");
app.Run();
http://+:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://+:3000");
app.MapGet("/", () => "Hello World");
app.Run();
http://0.0.0.0:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://0.0.0.0:3000");
app.MapGet("/", () => "Hello World");
app.Run();
ASPNETCORE_URLS kullanarak tüm arabirimlerde dinleme
Önceki örnekler kullanabilir ASPNETCORE_URLS
ASPNETCORE_URLS=http://*:3000;https://+:5000;http://0.0.0.0:5005
Geliştirme sertifikası ile HTTPS belirtme
var app = WebApplication.Create(args);
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Geliştirme sertifikası hakkında daha fazla bilgi için bkz . Windows ve macOS'ta ASP.NET Core HTTPS geliştirme sertifikasına güvenme.
Özel sertifika kullanarak HTTPS belirtme
Aşağıdaki bölümlerde, dosyayı kullanarak ve yapılandırma yoluyla özel sertifikanın nasıl belirtileceğini gösterilmektedir appsettings.json
.
Ile özel sertifikayı belirtin appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Certificates": {
"Default": {
"Path": "cert.pem",
"KeyPath": "key.pem"
}
}
}
}
Yapılandırma aracılığıyla özel sertifikayı belirtme
var builder = WebApplication.CreateBuilder(args);
// Configure the cert and the key
builder.Configuration["Kestrel:Certificates:Default:Path"] = "cert.pem";
builder.Configuration["Kestrel:Certificates:Default:KeyPath"] = "key.pem";
var app = builder.Build();
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Sertifika API'lerini kullanma
using System.Security.Cryptography.X509Certificates;
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>
{
options.ConfigureHttpsDefaults(httpsOptions =>
{
var certPath = Path.Combine(builder.Environment.ContentRootPath, "cert.pem");
var keyPath = Path.Combine(builder.Environment.ContentRootPath, "key.pem");
httpsOptions.ServerCertificate = X509Certificate2.CreateFromPemFile(certPath,
keyPath);
});
});
var app = builder.Build();
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Yapılandırma
Aşağıdaki kod yapılandırma sisteminden okunur:
var app = WebApplication.Create(args);
var message = app.Configuration["HelloKey"] ?? "Config failed!";
app.MapGet("/", () => message);
app.Run();
Daha fazla bilgi için bkz . ASP.NET Core'da yapılandırma
Günlük Kaydı
Aşağıdaki kod, oturum açma uygulaması başlatma işlemine bir ileti yazar:
var app = WebApplication.Create(args);
app.Logger.LogInformation("The app started");
app.MapGet("/", () => "Hello World");
app.Run();
Daha fazla bilgi için bkz . .NET Core ve ASP.NET Core'da oturum açma
Bağımlılık Ekleme (DI) kapsayıcıya erişme
Aşağıdaki kod, uygulama başlatma sırasında DI kapsayıcısından hizmet almayı gösterir:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddScoped<SampleService>();
var app = builder.Build();
app.MapControllers();
using (var scope = app.Services.CreateScope())
{
var sampleService = scope.ServiceProvider.GetRequiredService<SampleService>();
sampleService.DoSomething();
}
app.Run();
Daha fazla bilgi için, bkz. ASP.NET Core'de bağımlılık ekleme.
WebApplicationBuilder
Bu bölüm, kullanan WebApplicationBuilderörnek kodu içerir.
İçerik kökünü, uygulama adını ve ortamı değiştirme
Aşağıdaki kod içerik kökünü, uygulama adını ve ortamı ayarlar:
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
Args = args,
ApplicationName = typeof(Program).Assembly.FullName,
ContentRootPath = Directory.GetCurrentDirectory(),
EnvironmentName = Environments.Staging,
WebRootPath = "customwwwroot"
});
Console.WriteLine($"Application Name: {builder.Environment.ApplicationName}");
Console.WriteLine($"Environment Name: {builder.Environment.EnvironmentName}");
Console.WriteLine($"ContentRoot Path: {builder.Environment.ContentRootPath}");
Console.WriteLine($"WebRootPath: {builder.Environment.WebRootPath}");
var app = builder.Build();
WebApplication.CreateBuilder önceden yapılandırılmış varsayılanlarla WebApplicationBuilder sınıfının yeni bir örneğini başlatır.
Daha fazla bilgi için bkz . ASP.NET Temel bilgilere genel bakış
İçerik kökünü, uygulama adını ve ortamı ortam değişkenlerine veya komut satırına göre değiştirme
Aşağıdaki tabloda içerik kökünü, uygulama adını ve ortamı değiştirmek için kullanılan ortam değişkeni ve komut satırı bağımsız değişkeni gösterilmektedir:
özelliği | Ortam değişkeni | Komut satırı bağımsız değişkeni |
---|---|---|
Uygulama adı | ASPNETCORE_APPLICATIONNAME | --applicationName |
Ortam adı | ASPNETCORE_ENVIRONMENT | --çevre |
İçerik kökü | ASPNETCORE_CONTENTROOT | --contentRoot |
Yapılandırma sağlayıcıları ekleme
Aşağıdaki örnek INI yapılandırma sağlayıcısını ekler:
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddIniFile("appsettings.ini");
var app = builder.Build();
Ayrıntılı bilgi için bkz. ASP.NET Core'da Yapılandırma bölümünde dosya yapılandırma sağlayıcıları.
Yapılandırmayı okuma
Varsayılan olarak WebApplicationBuilder , yapılandırmayı aşağıdakiler dahil olmak üzere birden çok kaynaktan okur:
appSettings.json
veappSettings.{environment}.json
- Ortam değişkenleri
- Komut satırı
Aşağıdaki kod yapılandırmadan okur HelloKey
ve değeri uç noktada görüntüler /
. Yapılandırma değeri null ise , "Hello" öğesine message
atanır:
var builder = WebApplication.CreateBuilder(args);
var message = builder.Configuration["HelloKey"] ?? "Hello";
var app = builder.Build();
app.MapGet("/", () => message);
app.Run();
Okunan yapılandırma kaynaklarının tam listesi için bkz. ASP.NET Core'da Yapılandırma'da varsayılan yapılandırma
Günlük sağlayıcıları ekleme
var builder = WebApplication.CreateBuilder(args);
// Configure JSON logging to the console.
builder.Logging.AddJsonConsole();
var app = builder.Build();
app.MapGet("/", () => "Hello JSON console!");
app.Run();
Hizmet ekleme
var builder = WebApplication.CreateBuilder(args);
// Add the memory cache services.
builder.Services.AddMemoryCache();
// Add a custom scoped service.
builder.Services.AddScoped<ITodoRepository, TodoRepository>();
var app = builder.Build();
IHostBuilder'i özelleştirme
üzerindeki IHostBuilder mevcut uzantı yöntemlerine Host özelliği kullanılarak erişilebilir:
var builder = WebApplication.CreateBuilder(args);
// Wait 30 seconds for graceful shutdown.
builder.Host.ConfigureHostOptions(o => o.ShutdownTimeout = TimeSpan.FromSeconds(30));
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
IWebHostBuilder'i özelleştirme
üzerindeki IWebHostBuilder uzantı yöntemlerine WebApplicationBuilder.WebHost özelliği kullanılarak erişilebilir.
var builder = WebApplication.CreateBuilder(args);
// Change the HTTP server implemenation to be HTTP.sys based
builder.WebHost.UseHttpSys();
var app = builder.Build();
app.MapGet("/", () => "Hello HTTP.sys");
app.Run();
Web kökünü değiştirme
Varsayılan olarak, web kökü klasördeki içerik köküne wwwroot
göredir. Web kökü, statik dosyalar ara yazılımının statik dosyaları ara yazılımının ara yazılım tarafından arandığı yerdir. Web kökü ile, komut satırıyla WebHostOptions
veya yöntemiyle UseWebRoot değiştirilebilir:
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
Args = args,
// Look for static files in webroot
WebRootPath = "webroot"
});
var app = builder.Build();
app.Run();
Özel bağımlılık ekleme (DI) kapsayıcısı
Aşağıdaki örnekte Autofac kullanılır:
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
// Register services directly with Autofac here. Don't
// call builder.Populate(), that happens in AutofacServiceProviderFactory.
builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new MyApplicationModule()));
var app = builder.Build();
Ara Yazılım Ekle
Mevcut ASP.NET Core ara yazılımları üzerinde WebApplication
yapılandırılabilir:
var app = WebApplication.Create(args);
// Setup the file server to serve static files.
app.UseFileServer();
app.MapGet("/", () => "Hello World!");
app.Run();
Daha fazla bilgi için bkz . ASP.NET Core Ara Yazılımı
Geliştirici özel durum sayfası
WebApplication.CreateBuilder önceden yapılandırılmış varsayılanlarla sınıfının yeni bir örneğini WebApplicationBuilder başlatır. Geliştirici özel durum sayfası önceden yapılandırılmış varsayılanlarda etkinleştirilir. Geliştirme ortamında aşağıdaki kod çalıştırıldığında, öğesine /
gitmek özel durumu gösteren kolay bir sayfa oluşturur.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () =>
{
throw new InvalidOperationException("Oops, the '/' route has thrown an exception.");
});
app.Run();
WebApplication
Aşağıdaki kod bir ASP.NET Core şablonu tarafından oluşturulur:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Yukarıdaki kod, komut satırında veya Visual Studio'da Boş Web şablonu seçerek oluşturulabilir dotnet new web
.
Aşağıdaki kod, açıkça oluşturmadan bir WebApplication WebApplicationBuilder(app
) oluşturur:
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
WebApplication.Create
önceden yapılandırılmış varsayılanlarla sınıfının yeni bir örneğini WebApplication başlatır.
WebApplication
aşağıdaki ara yazılımı Minimal API applications
belirli koşullara bağlı olarak otomatik olarak ekler:
UseDeveloperExceptionPage
, olduğundaHostingEnvironment
"Development"
ilk olarak eklenir.UseRouting
, kullanıcı kodu henüz çağrılmazsaUseRouting
ve örneğinapp.MapGet
yapılandırılmış uç noktalar varsa eklenir.UseEndpoints
, herhangi bir uç nokta yapılandırılırsa ara yazılım işlem hattının sonuna eklenir.UseAuthentication
kullanıcı kodu henüz çağrılmazsaUseAuthentication
ve hizmet sağlayıcısında algılanabilirseIAuthenticationSchemeProvider
hemen sonraUseRouting
eklenir.IAuthenticationSchemeProvider
kullanılırkenAddAuthentication
varsayılan olarak eklenir ve kullanılarak hizmetler algılanırIServiceProviderIsService
.UseAuthorization
, kullanıcı kodu henüz çağrılmazsaUseAuthorization
ve hizmet sağlayıcısında algılanabilirseIAuthorizationHandlerProvider
eklenir.IAuthorizationHandlerProvider
kullanılırkenAddAuthorization
varsayılan olarak eklenir ve kullanılarak hizmetler algılanırIServiceProviderIsService
.- Kullanıcı tarafından yapılandırılmış ara yazılım ve uç noktalar ile
UseEndpoints
arasınaUseRouting
eklenir.
Aşağıdaki kod, uygulamaya eklenen otomatik ara yazılımların etkili bir şekilde ürettiği koddur:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Bazı durumlarda, varsayılan ara yazılım yapılandırması uygulama için doğru değildir ve değişiklik gerektirir. Örneğin, UseCors ve UseAuthorizationöncesinde UseAuthentication çağrılmalıdır. Uygulamanın çağrısı UseAuthentication
UseAuthorization
ve çağrılıp çağrılmaması UseCors
gerekir:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Yol eşleştirme gerçekleşmeden önce ara yazılım çalıştırılmalıdır, UseRouting çağrılmalı ve ara yazılım çağrısından UseRouting
önce yerleştirilmelidir. UseEndpoints daha önce açıklandığı gibi otomatik olarak eklendiğinden bu durumda gerekli değildir:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Terminal ara yazılımı eklerken:
- Ara yazılım, sonrasında
UseEndpoints
eklenmelidir. - Terminal ara yazılımının doğru konuma yerleştirilebilmesi için uygulamanın araması
UseRouting
UseEndpoints
gerekir.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
Terminal ara yazılımı, isteği hiçbir uç nokta işlemezse çalışan ara yazılımdır.
Bağlantı noktalarıyla çalışma
Visual Studio veya dotnet new
ile bir web uygulaması oluşturulduğunda, uygulamanın yanıt verdiği bağlantı noktalarını belirten bir Properties/launchSettings.json
dosya oluşturulur. Sonraki bağlantı noktası ayarı örneklerinde, uygulamayı Visual Studio'dan çalıştırmak bir hata iletişim kutusu Unable to connect to web server 'AppName'
döndürür. Visual Studio, içinde Properties/launchSettings.json
belirtilen bağlantı noktasını beklediğinden ancak uygulama tarafından app.Run("http://localhost:3000")
belirtilen bağlantı noktasını kullandığından bir hata döndürür. Komut satırından örnekleri değiştirerek aşağıdaki bağlantı noktasını çalıştırın.
Aşağıdaki bölümlerde uygulamanın yanıt verdiği bağlantı noktası ayarlanır.
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run("http://localhost:3000");
Önceki kodda uygulama bağlantı noktasına 3000
yanıt verir.
Birden çok bağlantı noktası
Aşağıdaki kodda uygulama ve 4000
bağlantı noktasına 3000
yanıt verir.
var app = WebApplication.Create(args);
app.Urls.Add("http://localhost:3000");
app.Urls.Add("http://localhost:4000");
app.MapGet("/", () => "Hello World");
app.Run();
Komut satırından bağlantı noktasını ayarlama
Aşağıdaki komut, uygulamanın bağlantı noktasına 7777
yanıt vermesini sağlar:
dotnet run --urls="https://localhost:7777"
Kestrel Uç nokta dosyada appsettings.json
da yapılandırılmışsa, appsettings.json
belirtilen dosya URL'si kullanılır. Daha fazla bilgi için bkz. Kestrel uç nokta yapılandırması
Bağlantı noktasını ortamdan okuma
Aşağıdaki kod, bağlantı noktasını ortamdan okur:
var app = WebApplication.Create(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "3000";
app.MapGet("/", () => "Hello World");
app.Run($"http://localhost:{port}");
Bağlantı noktasını ortamdan ayarlamanın tercih edilen yolu, aşağıdaki bölümde gösterilen ortam değişkenini kullanmaktır ASPNETCORE_URLS
.
ASPNETCORE_URLS ortam değişkeni aracılığıyla bağlantı noktalarını ayarlama
Ortam ASPNETCORE_URLS
değişkeni, bağlantı noktasını ayarlamak için kullanılabilir:
ASPNETCORE_URLS=http://localhost:3000
ASPNETCORE_URLS
birden çok URL'leri destekler:
ASPNETCORE_URLS=http://localhost:3000;https://localhost:5000
Tüm arabirimlerde dinleme
Aşağıdaki örneklerde tüm arabirimlerde dinleme gösterilmektedir
http://*:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://*:3000");
app.MapGet("/", () => "Hello World");
app.Run();
http://+:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://+:3000");
app.MapGet("/", () => "Hello World");
app.Run();
http://0.0.0.0:3000
var app = WebApplication.Create(args);
app.Urls.Add("http://0.0.0.0:3000");
app.MapGet("/", () => "Hello World");
app.Run();
ASPNETCORE_URLS kullanarak tüm arabirimlerde dinleme
Önceki örnekler kullanabilir ASPNETCORE_URLS
ASPNETCORE_URLS=http://*:3000;https://+:5000;http://0.0.0.0:5005
ASPNETCORE_HTTPS_PORTS kullanarak tüm arabirimleri dinleme
Yukarıdaki örnekler ve ASPNETCORE_HTTP_PORTS
kullanabilirASPNETCORE_HTTPS_PORTS
.
ASPNETCORE_HTTP_PORTS=3000;5005
ASPNETCORE_HTTPS_PORTS=5000
Daha fazla bilgi için bkz . ASP.NET Core Kestrel web sunucusu için uç noktaları yapılandırma
Geliştirme sertifikası ile HTTPS belirtme
var app = WebApplication.Create(args);
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Geliştirme sertifikası hakkında daha fazla bilgi için bkz . Windows ve macOS'ta ASP.NET Core HTTPS geliştirme sertifikasına güvenme.
Özel sertifika kullanarak HTTPS belirtme
Aşağıdaki bölümlerde, dosyayı kullanarak ve yapılandırma yoluyla özel sertifikanın nasıl belirtileceğini gösterilmektedir appsettings.json
.
Ile özel sertifikayı belirtin appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Certificates": {
"Default": {
"Path": "cert.pem",
"KeyPath": "key.pem"
}
}
}
}
Yapılandırma aracılığıyla özel sertifikayı belirtme
var builder = WebApplication.CreateBuilder(args);
// Configure the cert and the key
builder.Configuration["Kestrel:Certificates:Default:Path"] = "cert.pem";
builder.Configuration["Kestrel:Certificates:Default:KeyPath"] = "key.pem";
var app = builder.Build();
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Sertifika API'lerini kullanma
using System.Security.Cryptography.X509Certificates;
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>
{
options.ConfigureHttpsDefaults(httpsOptions =>
{
var certPath = Path.Combine(builder.Environment.ContentRootPath, "cert.pem");
var keyPath = Path.Combine(builder.Environment.ContentRootPath, "key.pem");
httpsOptions.ServerCertificate = X509Certificate2.CreateFromPemFile(certPath,
keyPath);
});
});
var app = builder.Build();
app.Urls.Add("https://localhost:3000");
app.MapGet("/", () => "Hello World");
app.Run();
Ortamı okuma
var app = WebApplication.Create(args);
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/oops");
}
app.MapGet("/", () => "Hello World");
app.MapGet("/oops", () => "Oops! An error happened.");
app.Run();
Ortamı kullanma hakkında daha fazla bilgi için bkz . ASP.NET Core'da birden çok ortam kullanma
Yapılandırma
Aşağıdaki kod yapılandırma sisteminden okunur:
var app = WebApplication.Create(args);
var message = app.Configuration["HelloKey"] ?? "Config failed!";
app.MapGet("/", () => message);
app.Run();
Daha fazla bilgi için bkz . ASP.NET Core'da yapılandırma
Günlük Kaydı
Aşağıdaki kod, oturum açma uygulaması başlatma işlemine bir ileti yazar:
var app = WebApplication.Create(args);
app.Logger.LogInformation("The app started");
app.MapGet("/", () => "Hello World");
app.Run();
Daha fazla bilgi için bkz . .NET Core ve ASP.NET Core'da oturum açma
Bağımlılık Ekleme (DI) kapsayıcıya erişme
Aşağıdaki kod, uygulama başlatma sırasında DI kapsayıcısından hizmet almayı gösterir:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddScoped<SampleService>();
var app = builder.Build();
app.MapControllers();
using (var scope = app.Services.CreateScope())
{
var sampleService = scope.ServiceProvider.GetRequiredService<SampleService>();
sampleService.DoSomething();
}
app.Run();
Aşağıdaki kod, özniteliğini kullanarak DI kapsayıcısından anahtarlara erişmeyi [FromKeyedServices]
gösterir:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddKeyedSingleton<ICache, BigCache>("big");
builder.Services.AddKeyedSingleton<ICache, SmallCache>("small");
var app = builder.Build();
app.MapGet("/big", ([FromKeyedServices("big")] ICache bigCache) => bigCache.Get("date"));
app.MapGet("/small", ([FromKeyedServices("small")] ICache smallCache) => smallCache.Get("date"));
app.Run();
public interface ICache
{
object Get(string key);
}
public class BigCache : ICache
{
public object Get(string key) => $"Resolving {key} from big cache.";
}
public class SmallCache : ICache
{
public object Get(string key) => $"Resolving {key} from small cache.";
}
DI hakkında daha fazla bilgi için bkz . ASP.NET Core'da bağımlılık ekleme.
WebApplicationBuilder
Bu bölüm, kullanan WebApplicationBuilderörnek kodu içerir.
İçerik kökünü, uygulama adını ve ortamı değiştirme
Aşağıdaki kod içerik kökünü, uygulama adını ve ortamı ayarlar:
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
Args = args,
ApplicationName = typeof(Program).Assembly.FullName,
ContentRootPath = Directory.GetCurrentDirectory(),
EnvironmentName = Environments.Staging,
WebRootPath = "customwwwroot"
});
Console.WriteLine($"Application Name: {builder.Environment.ApplicationName}");
Console.WriteLine($"Environment Name: {builder.Environment.EnvironmentName}");
Console.WriteLine($"ContentRoot Path: {builder.Environment.ContentRootPath}");
Console.WriteLine($"WebRootPath: {builder.Environment.WebRootPath}");
var app = builder.Build();
WebApplication.CreateBuilder önceden yapılandırılmış varsayılanlarla WebApplicationBuilder sınıfının yeni bir örneğini başlatır.
Daha fazla bilgi için bkz . ASP.NET Temel bilgilere genel bakış
Ortam değişkenlerini veya komut satırını kullanarak içerik kökünü, uygulama adını ve ortamı değiştirme
Aşağıdaki tabloda içerik kökünü, uygulama adını ve ortamı değiştirmek için kullanılan ortam değişkeni ve komut satırı bağımsız değişkeni gösterilmektedir:
özelliği | Ortam değişkeni | Komut satırı bağımsız değişkeni |
---|---|---|
Uygulama adı | ASPNETCORE_APPLICATIONNAME | --applicationName |
Ortam adı | ASPNETCORE_ENVIRONMENT | --çevre |
İçerik kökü | ASPNETCORE_CONTENTROOT | --contentRoot |
Yapılandırma sağlayıcıları ekleme
Aşağıdaki örnek INI yapılandırma sağlayıcısını ekler:
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddIniFile("appsettings.ini");
var app = builder.Build();
Ayrıntılı bilgi için bkz. ASP.NET Core'da Yapılandırma bölümünde dosya yapılandırma sağlayıcıları.
Yapılandırmayı okuma
Varsayılan olarak WebApplicationBuilder , yapılandırmayı aşağıdakiler dahil olmak üzere birden çok kaynaktan okur:
appSettings.json
veappSettings.{environment}.json
- Ortam değişkenleri
- Komut satırı
Yapılandırma kaynaklarının tam listesi için bkz. ASP.NET Core'da Yapılandırma'da varsayılan yapılandırma.
Aşağıdaki kod yapılandırmadan okur HelloKey
ve değeri uç noktada görüntüler /
. Yapılandırma değeri null ise , "Hello" öğesine message
atanır:
var builder = WebApplication.CreateBuilder(args);
var message = builder.Configuration["HelloKey"] ?? "Hello";
var app = builder.Build();
app.MapGet("/", () => message);
app.Run();
Ortamı okuma
var builder = WebApplication.CreateBuilder(args);
if (builder.Environment.IsDevelopment())
{
Console.WriteLine($"Running in development.");
}
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Günlük sağlayıcıları ekleme
var builder = WebApplication.CreateBuilder(args);
// Configure JSON logging to the console.
builder.Logging.AddJsonConsole();
var app = builder.Build();
app.MapGet("/", () => "Hello JSON console!");
app.Run();
Hizmet ekleme
var builder = WebApplication.CreateBuilder(args);
// Add the memory cache services.
builder.Services.AddMemoryCache();
// Add a custom scoped service.
builder.Services.AddScoped<ITodoRepository, TodoRepository>();
var app = builder.Build();
IHostBuilder'i özelleştirme
üzerindeki IHostBuilder mevcut uzantı yöntemlerine Host özelliği kullanılarak erişilebilir:
var builder = WebApplication.CreateBuilder(args);
// Wait 30 seconds for graceful shutdown.
builder.Host.ConfigureHostOptions(o => o.ShutdownTimeout = TimeSpan.FromSeconds(30));
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
IWebHostBuilder'i özelleştirme
üzerindeki IWebHostBuilder uzantı yöntemlerine WebApplicationBuilder.WebHost özelliği kullanılarak erişilebilir.
var builder = WebApplication.CreateBuilder(args);
// Change the HTTP server implemenation to be HTTP.sys based
builder.WebHost.UseHttpSys();
var app = builder.Build();
app.MapGet("/", () => "Hello HTTP.sys");
app.Run();
Web kökünü değiştirme
Varsayılan olarak, web kökü klasördeki içerik köküne wwwroot
göredir. Web kökü, statik dosyalar ara yazılımının statik dosyaları ara yazılımının ara yazılım tarafından arandığı yerdir. Web kökü ile, komut satırıyla WebHostOptions
veya yöntemiyle UseWebRoot değiştirilebilir:
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
Args = args,
// Look for static files in webroot
WebRootPath = "webroot"
});
var app = builder.Build();
app.Run();
Özel bağımlılık ekleme (DI) kapsayıcısı
Aşağıdaki örnekte Autofac kullanılır:
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
// Register services directly with Autofac here. Don't
// call builder.Populate(), that happens in AutofacServiceProviderFactory.
builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new MyApplicationModule()));
var app = builder.Build();
Ara Yazılım Ekle
Mevcut ASP.NET Core ara yazılımları üzerinde WebApplication
yapılandırılabilir:
var app = WebApplication.Create(args);
// Setup the file server to serve static files.
app.UseFileServer();
app.MapGet("/", () => "Hello World!");
app.Run();
Daha fazla bilgi için bkz . ASP.NET Core Ara Yazılımı
Geliştirici özel durum sayfası
WebApplication.CreateBuilder önceden yapılandırılmış varsayılanlarla sınıfının yeni bir örneğini WebApplicationBuilder başlatır. Geliştirici özel durum sayfası önceden yapılandırılmış varsayılanlarda etkinleştirilir. Geliştirme ortamında aşağıdaki kod çalıştırıldığında, öğesine /
gitmek özel durumu gösteren kolay bir sayfa oluşturur.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () =>
{
throw new InvalidOperationException("Oops, the '/' route has thrown an exception.");
});
app.Run();
ASP.NET Core