mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
107 lines
3.1 KiB
C#
107 lines
3.1 KiB
C#
using EggLink.DanhengServer.Util;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.AspNetCore;
|
|
using Microsoft.AspNetCore.Server.Kestrel.Core;
|
|
using System.Net;
|
|
using System.Diagnostics;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.Hosting;
|
|
using System.IO;
|
|
|
|
namespace EggLink.DanhengServer.WebServer
|
|
{
|
|
public class WebProgram
|
|
{
|
|
public static void Main(string[] args, int port, string address)
|
|
{
|
|
BuildWebHost(args, port, address).Start();
|
|
}
|
|
|
|
public static IWebHost BuildWebHost(string[] args, int port, string address)
|
|
{
|
|
var b = WebHost.CreateDefaultBuilder(args)
|
|
.UseStartup<Startup>()
|
|
.ConfigureLogging((hostingContext, logging) =>
|
|
{
|
|
logging.ClearProviders();
|
|
})
|
|
.UseUrls(address);
|
|
|
|
if (ConfigManager.Config.HttpServer.UseSSL)
|
|
{
|
|
b.UseKestrel(options =>
|
|
{
|
|
options.Listen(IPAddress.Any, port, listenOptions =>
|
|
{
|
|
listenOptions.UseHttps(
|
|
ConfigManager.Config.KeyStore.KeyStorePath,
|
|
ConfigManager.Config.KeyStore.KeyStorePassword
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
return b.Build();
|
|
}
|
|
}
|
|
|
|
public class Startup
|
|
{
|
|
public void ConfigureServices(IServiceCollection services)
|
|
{
|
|
services.AddCors(options =>
|
|
{
|
|
options.AddPolicy("AllowAll",
|
|
builder =>
|
|
{
|
|
builder.AllowAnyOrigin()
|
|
.AllowAnyMethod()
|
|
.AllowAnyHeader();
|
|
});
|
|
});
|
|
|
|
services.AddControllers();
|
|
}
|
|
|
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
|
{
|
|
if (env.IsDevelopment())
|
|
{
|
|
app.UseDeveloperExceptionPage();
|
|
}
|
|
|
|
app.Use(async (context, next) =>
|
|
{
|
|
using var buffer = new MemoryStream();
|
|
var request = context.Request;
|
|
var response = context.Response;
|
|
|
|
var bodyStream = response.Body;
|
|
response.Body = buffer;
|
|
|
|
await next.Invoke();
|
|
buffer.Position = 0;
|
|
context.Response.Headers["Content-Length"] = (response.ContentLength ?? buffer.Length).ToString();
|
|
context.Response.Headers.Remove("Transfer-Encoding");
|
|
await buffer.CopyToAsync(bodyStream);
|
|
});
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
app.UseRouting();
|
|
|
|
app.UseCors("AllowAll");
|
|
|
|
app.UseAuthorization();
|
|
|
|
app.UseEndpoints(endpoints =>
|
|
{
|
|
endpoints.MapControllers();
|
|
});
|
|
}
|
|
}
|
|
}
|