Otomatik Mühendis
ASP.NET Core Sitesini Konsol Parametleriyle Çalıştırmak
ASP.NET Core uygulamasını içeren .dll dosyası KestrelHttpServer sunucusu sayesinde IIS’e ihtiyaç duymadan ayağa kalkabilmektedir. Bir konsol uygulaması gibi çalışmaktadır.
Örnek senaryomuz; Heroku cloud platformuna kurduğumuz uygulamamız ayağa kaldırıldığı sırada server.urls
parametresi ile belirli bir portu dinlemeye zorlanmaktadır. ASP.NET Core uygulamaları ön tanımlı olarak 5000 portu üzerinden çalışırlar. Bu durumda uygulamamız istenen portu dinlemeyecektir.
cd /app/heroku_output && dotnet ./Libton.dll --server.urls http://+:54372
Heroku platformunda dotnet cli‘a gönderilen bu komutta istenen port değişken olarak verilmektedir.
Konsol uygulamalarında çalıştırma sırasında parametreler vererek program içerisinde bunları kullanabiliriz. Bu yeteneği uygulamamıza kazandırabilmek için NuGet Package Manager üzerinden Microsoft.Extensions.Configuration.CommandLine referansını ekleriz.
Daha sonra Program class’ında ki Main methodunda, komut satırı parametrelerini ayar parametlerine dönüştürerek, WebHostBuilder’a bu ayarları aktarırız.
Bu çalışma sonunda Program.cs dosyamız aşağıdaki hali alır.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
namespace Libton
{
public class Program
{
public static void Main(string[] args)
{
//Komut satırı parametrelerini ayarlara çevirir
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)//Ayarları aktarır
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
Evet, ASP.NET Heroku’da çalışabiliyor.