【发布时间】:2017-03-29 10:18:01
【问题描述】:
如何让 asp.net 核心从我的 wwwroot 中提供 index.html 文件?
我想这样做的原因是因为我使用 Angular CLI 开发了一个 Angular 4 应用程序,它负责整个构建过程。我已将其设置为构建到我的 asp.net 核心项目的 wwwroot 目录中,但 asp.net 核心不想为它提供服务。
起初我尝试通过控制器返回 html 文件。我试过这条路线:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
然后在控制器中我像这样返回 html 文件:
public IActionResult Index()
{
var webRoot = _env.WebRootPath;
var path = System.IO.Path.Combine(webRoot, "index.html");
return File(path, "text/html");
}
这不起作用。它返回了 404 not found 异常并给出了路径,但它给出的路径是 index.html 文件的正确路径(我将其剪切并粘贴到资源管理器中并打开了文件)。
我也在启动时声明这些:
app.UseStaticFiles();
app.UseDefaultFiles();
然后我尝试删除默认路由。现在我可以访问 index.html 文件,但前提是我输入文件名,即:
本地主机:58420/index.html
如果我在没有指定“index.html”的情况下尝试访问域的根目录,则会收到 404 错误。
引用 index.html 作为默认页面的正确方法是什么?我猜从控制器做这件事可能会更好,因为这样它将与角度路由兼容而无需重写。
【问题讨论】:
-
是您的控制器名称
HomeController? -
是的,我在上面粘贴的操作正在触发并且具有正确的文件路径,但它给出了 404 文件未找到异常并在异常中指定了正确的路径。可能是 wwwroot 文件夹内部存在一些安全问题?
-
(I cut and pasted it into explorer and the file opened).是的,路径绝对正确
标签: c# asp.net-core kestrel-http-server