基本的ASP.NET Core 2.1 Web应用程序。
Startup.cs
包含以下内容:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
app.UseMvc();
}
在这种情况下,当我尝试浏览到webroot目录(即project-dir / wwwroot)中的任何HTML文件时,都不会得到投放。 webroot目录包含一个index.html
文件和一个第二HTML文件。键入URL不能提供任何服务。
如果我更改Startup.cs
以包括默认文件,如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc();
}
然后将index.html
文件送达。即使我输入另一个HTML文件的名称,我也会得到index.html
文件(根据文档)。因此,显然UseDefaultFiles()
调用的URL编写器可以正确处理此问题,但是为什么直接URL无法起作用?
编辑 我在上面说过“当我尝试浏览到Webroot中的任何HTML文件时”,但实际上我没有尝试“任何”文件,但我正在使用的文件要么具有exports.html,index.html之类的名称,要么称为“核心”的子文件夹。有关发现的内容,请参见下面的答案。
答案 0 :(得分:3)
UseStaticFiles()
,专门用于wwwroot
项目目录。您可以根据需要自定义要提供服务的目录。
当您说“ webroot”时,我只能猜测您是在谈论项目根目录,默认情况下将不提供该根目录。调用UseDefaultFiles()
会稍微改变此行为,以允许自动提供index.html
之类的内容,但通常不会覆盖静态文件。
您能做的最好的事情就是将所有内容都放在wwwroot
中。使用静态文件中间件时,那里的所有内容都将自动映射到文档根目录,因此wwwroot/index.html
将在https://example.com/index.html
可用,同样,任何静态资源(例如JS或CSS)也将可用。
答案 1 :(得分:0)
也许IIS服务器不提供JS,CSS和图像文件(静态文件)。在某些部署中发生在我身上 试试这个
Windows 7
Windows Server 2008
答案 2 :(得分:0)
答案很简单,令人惊讶:
显然,ASPNetCore不接受某些字符串作为文件夹和文件名。
禁止的值是:
exports
core
这意味着文件夹名和文件名都没有(例如,exports.html无法使用,并且子文件夹“ exports”也很麻烦。)
那是我找到的两个,因为这些名称出现在我的目录中。可能还有其他名称。我在任何地方都找不到关于此的文档
但奇怪的是,“ index.html”也不起作用。仅当我使用app.UseDefaultFiles()处理该文件时,该方法才有效。
(要澄清的注意-当我在原始帖子中说“什么都没有得到”时,实际上没有得到得到的是名称为“ exports.html”的文件以及“核心”子文件夹中的所有文件。不会测试任何文件和所有文件-当我在wwwroot文件夹中创建具有随机名称的随机测试文件时,它们确实得到了服务。)
这里仍然有些不对劲,但是它可以满足我的需求。