Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specifying default file name for asp.net core static folder

I currently have a generated index.html, js and other static files living in a folder and I'm marking that folder as a static folder (by adding the following in the Configure method in Startup.cs:

   app.UseDefaultFiles();
   app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new Path.Combine(env.ContentRootPath, @"../build")),
        RequestPath = new PathString("/app/")
    });

Is there a way to set index.html as the default response for this */app route? Because right now localhost:5000/app/ returns a 404 while localhost:5000/app/index.html returns the index.html.

EDIT: I missed to mention that I did try using app.UseDefaultFiles() like mentioned in docs but it does not work for me. The server still returns a 404

like image 406
Arvind Venkataraman Avatar asked Feb 16 '17 16:02

Arvind Venkataraman


2 Answers

One of the comments in that docs has clarified it:

Kieren_Johnstone Featured May 22, 2017

The section, "Serving a default document" misses some vital information. If you configure your UseStaticFiles to work off a non-root RequestPath, you need to pass the same FileProvider and RequestPath into both UseDefaultFiles and UseStaticFiles, it seems. You can't always just call it as stated in the section.

So that means, you should write something like this to enable your specified folder to provide a default page:

    app.UseDefaultFiles(new DefaultFilesOptions()
    {
        FileProvider = Path.Combine(env.ContentRootPath, @"../build")),
        RequestPath = new PathString("/app/")
    });
    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = Path.Combine(env.ContentRootPath, @"../build")),
        RequestPath = new PathString("/app/")
    });
like image 126
Vigilans Avatar answered Oct 30 '22 23:10

Vigilans


Use this:

public void Configure(IApplicationBuilder app)
{
    // Serve my app-specific default file, if present.
    DefaultFilesOptions options = new DefaultFilesOptions();
    options.DefaultFileNames.Clear();
    options.DefaultFileNames.Add("mydefault.html");
    app.UseDefaultFiles(options);
    app.UseStaticFiles();
}

For more details follow this link:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files
and go to section: "Serving a default document"
like image 43
Brijesh Avatar answered Oct 31 '22 01:10

Brijesh