C#

MVC Windows Servis

IIS veya Nginx olmadan dotnet web uygulamamızı windows veya linux servisi olarak yayınlayabiliyoruz. Önceki versiyonlarda yapılabilmekle beraber vereceğim örnek dotnet6 ile yapılmıştır. Hızlı olması için MVC örneği kullanacağım.

Gereken nuget kütüphaneleri:

Windows için -> Microsoft.Extensions.Hosting.WindowsServices

Linux için -> Microsoft.Extensions.Hosting.Systemd

Program.cs

var webApplicationOptions = new WebApplicationOptions() { ContentRootPath = AppContext.BaseDirectory, Args = args, ApplicationName = System.Diagnostics.Process.GetCurrentProcess().ProcessName };
var builder = WebApplication.CreateBuilder(webApplicationOptions);

builder.Services.AddControllersWithViews();
//builder.Host.UseWindowsService(); //windows için
//builder.Host.UseSystemd(); //linux için

var app = builder.Build();
if (!app.Environment.IsDevelopment()) {
    app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseStaticFiles();
app.UseCors(c=> c.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowAnyMethod());
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

app.Run();

Windows servisi olarak işlemler yapmak için;

sc.exe create “HttpWorker” binpath=”C:\…\Release\net6.0\publish\HttpWorker.exe”

sc.exe stop “HttpWorker”

sc.exe delete “HttpWorker”

Linux servis kurulumuna örnek vermiyorum. Linux işletim sistemine göre değişebilir.