我怎样才能让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");
}
这不管用。它返回了一个404not found异常,并给出了路径,但它给出的路径是index.html文件的正确路径(我将其剪切并粘贴到资源管理器中,然后文件就打开了)。
我在启动时也声明了这些:
app.UseStaticFiles();
app.UseDefaultFiles();
然后,我尝试删除默认路由。现在,我可以访问index.html文件,但前提是我必须键入文件名,即:
本地主机:58420/index.html
如果我试图在没有指定"index.html“的情况下访问域的根目录,我会得到一个404错误。
引用index.html作为默认页面的正确方式是什么?我猜在控制器上做可能会更好,因为这样它就可以在不重写的情况下与angular路由兼容。
发布于 2019-07-18 11:23:55
app.UseDefaultFiles(new DefaultFilesOptions {
DefaultFileNames = new List<string> { "index.html" }
});
app.UseStaticFiles();
这是最佳选择,因为UseDefaultFiles
URL重写器将只搜索index.html
,而不搜索遗留文件:default.htm
、default.html
和index.htm
。
https://stackoverflow.com/questions/43090718
复制相似问题