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 ?