RequestPath 可以与默认文件一起使用,就像 dotnet core 中的静态文件一样吗?

alu*_*lun 3 c# .net-core asp.net-core

因此,我从多个不同位置提供静态文件,如下所示:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m1",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m1")
        });
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m2",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m2")
        });            
    }
Run Code Online (Sandbox Code Playgroud)

每个都有一个index.html,使用http://localhost:5000/m1/index.html之类的东西来访问它们可以正常工作。

我还希望它们能够像这样访问:http://localhost:5000/m1/

我当然可以手动编写一些代码,但这正是默认文件应该做的事情,所以我希望下面的代码能够工作。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseDefaultFiles(new DefaultFilesOptions 
        {
            RequestPath = "/m1"
        });
        app.UseDefaultFiles(new DefaultFilesOptions 
        {
            RequestPath = "/m2"
        });               
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m1",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m1")
        });
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m2",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m2")
        });            
    }
Run Code Online (Sandbox Code Playgroud)

然而,它确实不起作用。有人有解决这个问题的办法吗?

alu*_*lun 6

找到了阅读默认文件中间件的源代码。您需要为两个中间件提供相同的文件提供程序,这样就可以工作:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseDefaultFiles(new DefaultFilesOptions 
        {
            RequestPath = "/m1",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m1")
        });
        app.UseDefaultFiles(new DefaultFilesOptions 
        {
            RequestPath = "/m2",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m2")
        });               
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m1",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m1")
        });
        app.UseStaticFiles(new StaticFileOptions 
        {
            RequestPath = "/m2",
            FileProvider = new PhysicalFileProvider(@"C:\temp\m2")
        });            
    }
Run Code Online (Sandbox Code Playgroud)

  • 您甚至可以共享实例 (4认同)