.NET Core 最简单的独立静态文件服务器
Simplest standalone static file server for .NET Core
我写了关于如何使用尽可能少的行和文件为 .NET Core 编写一个简单的静态文件服务器的问题。
它被标记为 的副本。所以我的问题是:
真的是最简单的 .NET Core 静态文件网络服务器吗?我是否理解正确(我正在尝试从各种来源拼凑信息)?
Startup.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(), @"wwwroot\dist"))
});
}
}
}
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.AspNetCore
、Microsoft.AspNetCore.Hosting
和 Microsoft.AspNetCore.StaticFiles
。或者为了快速设置,您可以只安装一个包 Microsoft.AspNetCore.All
。
对于 .NET 6 / C# 10 或更高版本
如果top-level statements, global using directives and minimal hosting model更简单:
创建一个ASP.NET核心空项目
dotnet new web
更改(如果不存在则创建)Program.cs
到
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDirectoryBrowser();
var app = builder.Build();
app.UseFileServer(enableDirectoryBrowsing: true);
app.Run();
运行吧。您可以更改 host configuration values like urls
or webroot
with command line。例如:
dotnet run -- webroot="C:/your-path/" urls="http://127.0.0.1:1234"
注意:要提供非标准内容类型,可能会返回 404。您需要 add extra configuration 通过:
app.UseFileServer(new FileServerOptions()
{
EnableDirectoryBrowsing = true,
StaticFileOptions =
{
ServeUnknownFileTypes = true,
DefaultContentType = "application/octet-stream"
}
});
我写了关于如何使用尽可能少的行和文件为 .NET Core 编写一个简单的静态文件服务器的问题。
它被标记为
Startup.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(), @"wwwroot\dist"))
});
}
}
}
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.AspNetCore
、Microsoft.AspNetCore.Hosting
和 Microsoft.AspNetCore.StaticFiles
。或者为了快速设置,您可以只安装一个包 Microsoft.AspNetCore.All
。
对于 .NET 6 / C# 10 或更高版本
如果top-level statements, global using directives and minimal hosting model更简单:
创建一个ASP.NET核心空项目
dotnet new web
更改(如果不存在则创建)
Program.cs
到var builder = WebApplication.CreateBuilder(args); builder.Services.AddDirectoryBrowser(); var app = builder.Build(); app.UseFileServer(enableDirectoryBrowsing: true); app.Run();
运行吧。您可以更改 host configuration values like
urls
orwebroot
with command line。例如:dotnet run -- webroot="C:/your-path/" urls="http://127.0.0.1:1234"
注意:要提供非标准内容类型,可能会返回 404。您需要 add extra configuration 通过:
app.UseFileServer(new FileServerOptions()
{
EnableDirectoryBrowsing = true,
StaticFileOptions =
{
ServeUnknownFileTypes = true,
DefaultContentType = "application/octet-stream"
}
});