gpt4 book ai didi

c# - Kestrel 中的 app.UseDefaultFiles 什么也没做?

转载 作者:行者123 更新时间:2023-11-30 20:16:56 30 4
gpt4 key购买 nike

我在一个小项目的 Startup.cs 文件中有这个文件,该文件用于一个使用 Kestrel 托管静态文件的网络服务器:

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var configBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("config.json");
var config = configBuilder.Build();

var options = new RewriteOptions()
.AddRedirectToHttps();

app.UseRewriter(options);

DefaultFilesOptions defoptions = new DefaultFilesOptions();
defoptions.DefaultFileNames.Clear();
defoptions.DefaultFileNames.Add("index.html");
app.UseDefaultFiles(defoptions);


app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"static")),
RequestPath = new PathString("")
});

loggerFactory.AddConsole(config.GetSection(key: "Logging"));
}
}

但是,它不会尝试加载 index.html 或任何内容。如果我手动访问它,它确实有效。

有什么想法吗?

谢谢

最佳答案

理想情况下,您的 index.html 应该位于网络根路径 (wwwroot) 下,但是,如果您的文件位于 ContentRootPath\static 下(看起来是),您需要更改代码以指定 DefaultFilesOptions.FileProvider,如下所示:

PhysicalFileProvider fileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"static"));
DefaultFilesOptions defoptions = new DefaultFilesOptions();
defoptions.DefaultFileNames.Clear();
defoptions.FileProvider = fileProvider;
defoptions.DefaultFileNames.Add("index.html");
app.UseDefaultFiles(defoptions);

app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = fileProvider,
RequestPath = new PathString("")
});

注意:您最好使用 IHostingEnvironment.ContentRootPath (env.ContentRootPath) 而不是 Directory.GetCurrentDirectory() 在第一行(以防万一您想在某些时候更改 WebHostBuilder 中的内容根目录)。

关于c# - Kestrel 中的 app.UseDefaultFiles 什么也没做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47351712/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com