Asp Net vNext 上的 Kestrel 不提供 / 下的索引页面

Posted

技术标签:

【中文标题】Asp Net vNext 上的 Kestrel 不提供 / 下的索引页面【英文标题】:Kestrel on AspNet vNext doesnt serve index page under / 【发布时间】:2015-05-14 03:11:50 【问题描述】:

我需要能够使用 Kestrel Web 服务器在默认 URL / 下提供我的“index.html”。现在我只能使用完整路径访问我的静态文件,即 /index.html

这同样适用于 VisualStudio,上下文是带有 Kestrel 的 OSX

这是我的 Startup.cs

public void ConfigureServices(DI.IServiceCollection services)
    
     services.AddMvc();
 

 public void Configure(IApplicationBuilder app)
 
     app.UseStaticFiles();
     app.UseMvc();
 

到目前为止,我的解决方案是在 HomeController 中进行重定向。但这很丑陋,我正在尝试提供一个静态 html 文件,老实说,我不希望它由我的应用程序处理,如果可能的话,直接从 Kestrel 提供。

【问题讨论】:

你能发布你的项目的截图吗?看起来你并没有愚弄 MVC 模式。 【参考方案1】:

您需要使用UseDefaultFiles() 启用DefaultFilesMiddleware,并将其放置在调用UseStaticFiles()之前:

app.UseDefaultFiles();
app.UseStaticFiles();

如果您不另外指定,中间件默认使用DefaultFilesOptions,这意味着将使用此默认文件名列表:

default.htm
default.html
index.htm
index.html

见MSDN

【讨论】:

这是一个很好的答案,我将其标记为已解决,尽管它仍然不适合我。空 / url 仍然没有服务。我仍然认为它可能与 Kestrel 服务器有关。 尝试致电UseDefaultFiles() 之前 UseStaticFiles()。另见github.com/aspnet/StaticFiles/issues/10 你完全明白了!,我会建议之前的评论作为答案的一部分 我完全错过的一件事是 html 文件必须驻留在名为 wwwroot 的 文件夹 中,它可能不会放在项目中像以前在 ASP.NET 中一样的根,如果它可以帮助任何人:)

以上是关于Asp Net vNext 上的 Kestrel 不提供 / 下的索引页面的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 5/vnext 上的磁盘上没有 dll 的代码合同

为什么 Linux 上的 Asp.NET 5 需要 Kestrel ?

在 Kestrel 上为 ASP.NET Core 上的两个不同端点发布两个不同的端点

在没有 ASP.NET 核心的情况下使用 Kestrel

ASP.NET 5 (vNext) - 获取配置设置

ASP.NET 5 (vNext) - 获取配置设置