的最简单的独立静态文件服务器.NET核心



我写了一个关于如何为编写简单静态文件服务器的问题。NET核心使用尽可能少的行和文件。

它被标记为ASP的副本。NET核心-服务于静态文件。所以我的问题是:

这个答案真的是最简单的吗。NET核心静态文件Web服务器可能吗?我是否理解正确(我正试图将各种来源的信息拼凑在一起(?

启动.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
namespace StaticFileServer {
public class Startup{
public void Configure(IApplicationBuilder app){
app.UseDefaultFiles();
app.UseStaticFiles(new StaticFileOptions() 
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwrootdist"))
});
}
}
}

Main.cs

using System;
using Microsoft.AspNetCore.Hosting;
namespace StaticFileServer
{
class Program
{
static void Main(string[] args)
{    
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}

把代码放在一起,我发现的从该位置提供静态文件的最简单完整的应用程序如下:

class Program
{
static void Main(string[] args)
{
WebHost.CreateDefaultBuilder(args)
.Configure(config => config.UseStaticFiles())
.UseWebRoot("wwwroot/dist").Build().Run();
}
}

如果你想保持轻松,你可以包括Microsoft.AspNetCoreMicrosoft.AspNetCore.HostingMicrosoft.AspNetCore.StaticFiles。或者,为了快速设置,您可以只安装一个软件包Microsoft.AspNetCore.All

For。NET 6/C#10或以上

如果使用顶级语句、全局使用指令和最小托管模型更简单:

  1. 创建ASP。NET Core Empty项目

    dotnet new web
    
  2. Program.cs更改(如果不存在则创建(为

    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDirectoryBrowser();
    var app = builder.Build();
    app.UseFileServer(enableDirectoryBrowsing: true);
    app.Run();
    
  3. 运行它。您可以通过命令行更改主机配置值,如urlswebroot。例如:

    dotnet run -- webroot="C:/your-path/" urls="http://127.0.0.1:1234"
    

注意:若要提供非标准内容类型,可能会返回404。您需要通过以下方式添加额外配置:

app.UseFileServer(new FileServerOptions()
{
EnableDirectoryBrowsing = true,
StaticFileOptions =
{
ServeUnknownFileTypes = true,
DefaultContentType = "application/octet-stream"
}
});

最新更新