Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

319
Visualizações
Setting index.html as default page in asp.net core

How can I get asp.net core to serve an index.html file from inside my wwwroot?

The reason I want to do this is because I an developing an angular 4 app using the angular CLI and it takes care of the entire build process. I have set it up to build into the wwwroot directory of my asp.net core project but asp.net core doesn't want to serve it.

At first I tried to return the html file through a controller. I tried this route:

app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}");
    });

And then in the controller I return the html file like this:

public IActionResult Index()
{
    var webRoot = _env.WebRootPath;
    var path = System.IO.Path.Combine(webRoot, "index.html");

    return File(path, "text/html");
}

This didn't work. It returned a 404 not found exception and gave the path but the path it gave was the correct path to the index.html file (I cut and pasted it into explorer and the file opened).

I am also declaring these in startup:

app.UseStaticFiles();
app.UseDefaultFiles();

I then tried removing the default route. Now I am able to get to the index.html file but only if I type the filename in, i.e.:

localhost:58420/index.html

If I try to access the root of the domain without the "index.html" specified I get a 404 error.

What is the proper way to reference the index.html as the default page? I am guessing doing it from a controller is probably better because then it will be compatible with angular routing without rewrites.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Just use this in startup.cs:

app.UseFileServer();

It's shorthand for:

app.UseDefaultFiles();
app.UseStaticFiles();

it avoids issues with having to have those in the correct order (as shown above)

about 4 years ago · Santiago Trujillo Relatório

0

I needed to declare UseDefaultFiles() before UseStaticFiles().

app.UseDefaultFiles();
app.UseStaticFiles();
about 4 years ago · Santiago Trujillo Relatório

0

Feb 2022 Update

To serve static files (such as index.html), the files should be in the folder wwwroot in your project. Use UseWebRoot if you want to change it to a different folder.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseFileServer();
}

This method also accepts a FileServerOptions instance for even more fine tuned control such as enabling directory browsing, which is disabled by default.

Reference: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files

Original answer (Jan '18)

Install the NuGet package Microsoft.AspNetCore.StaticFiles.

Now, in Startup.Configure method, add:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // Serve the files Default.htm, default.html, Index.htm, Index.html
    // by default (in that order), i.e., without having to explicitly qualify the URL.
    // For example, if your endpoint is http://localhost:3012/ and wwwroot directory
    // has Index.html, then Index.html will be served when someone hits
    // http://localhost:3012/
    //
    // (Function 1)
    app.UseDefaultFiles();

    // Enable static files to be served. This would allow html, images, etc. in wwwroot
    // directory to be served.
    //
    // (Function 2)
    app.UseStaticFiles();
}

Note: The order in which these functions are called is important. In OO programming, it's quite hard not to depend on ordering as objects maintain states that can vary during the lifetime of the object. (You guessed it right, one solution to prevent designs like this is to implement immutability.)

You should now get files served from wwwroot directory (use UseWebRoot if you want to change it to something else).

Source: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda