首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在asp.net核心中将index.html设置为默认页面

在asp.net核心中将index.html设置为默认页面
EN

Stack Overflow用户
提问于 2017-03-29 18:18:01
回答 8查看 41.1K关注 0票数 44

我怎样才能让asp.net核心从我的wwwroot内部提供index.html文件?

我想这样做的原因是因为我正在使用angular CLI开发一个angular 4应用程序,它负责整个构建过程。我已经将它设置为构建到我的asp.net核心项目的wwwroot目录中,但是asp.net核心不想为它提供服务。

首先,我试图通过一个控制器返回html文件。我尝试了以下方法:

代码语言:javascript
运行
复制
app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}");
    });

然后在控制器中返回html文件,如下所示:

代码语言:javascript
运行
复制
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文件的正确路径(我将其剪切并粘贴到资源管理器中,然后文件就打开了)。

我在启动时也声明了这些:

代码语言:javascript
运行
复制
app.UseStaticFiles();
app.UseDefaultFiles();

然后,我尝试删除默认路由。现在,我可以访问index.html文件,但前提是我必须键入文件名,即:

本地主机:58420/index.html

如果我试图在没有指定"index.html“的情况下访问域的根目录,我会得到一个404错误。

引用index.html作为默认页面的正确方式是什么?我猜在控制器上做可能会更好,因为这样它就可以在不重写的情况下与angular路由兼容。

EN

Stack Overflow用户

发布于 2019-07-18 11:23:55

代码语言:javascript
运行
复制
app.UseDefaultFiles(new DefaultFilesOptions {
    DefaultFileNames = new List<string> { "index.html" }
});
app.UseStaticFiles();

这是最佳选择,因为UseDefaultFiles URL重写器将只搜索index.html,而不搜索遗留文件:default.htmdefault.htmlindex.htm

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.2#serve-a-default-document

票数 3
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43090718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档