C# 从wwwroot内的文件夹提供静态文件

C# 从wwwroot内的文件夹提供静态文件,c#,asp.net-mvc,asp.net-core,aurelia,C#,Asp.net Mvc,Asp.net Core,Aurelia,我有以下ASP.NET核心项目结构: . ├── Controllers ├── Dockerfile ├── Models ├── Program.cs ├── Properties ├── README.md ├── Services ├── Startup.cs ├── Views ├── appsettings.json ├── bundleconfig.json ├── project.json ├── web.config └── wwwroot . ├── aurelia-app

我有以下ASP.NET核心项目结构:

.
├── Controllers
├── Dockerfile
├── Models
├── Program.cs
├── Properties
├── README.md
├── Services
├── Startup.cs
├── Views
├── appsettings.json
├── bundleconfig.json
├── project.json
├── web.config
└── wwwroot
.
├── aurelia-app
├── css
├── images
├── js
└── temp.html
wwwroot
内部,我使用Aurelia
cli
设置了一个Aurelia项目。其结构如下:

.
├── Controllers
├── Dockerfile
├── Models
├── Program.cs
├── Properties
├── README.md
├── Services
├── Startup.cs
├── Views
├── appsettings.json
├── bundleconfig.json
├── project.json
├── web.config
└── wwwroot
.
├── aurelia-app
├── css
├── images
├── js
└── temp.html
我的
aurelia应用程序
有我想要提供的
index.html
文件(当我浏览到
localhost:5000时,如果它在
wwwroot
中,则以类似的方式)

下面是我的
Startup.cs
configure()方法的样子:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseFileServer(new FileServerOptions
    {
        EnableDefaultFiles = true,
        EnableDirectoryBrowsing = true,
    });

   app.UseMvc();
}

我应该更改什么,以便在加载基本url时,它在
wwwroot/aurelia app
目录中查找
index.html
文件?

我不确定这是否有效,但您可以尝试

var options = new DefaultFilesOptions
{
   RequestPath = RequestPath = new PathString("/wwwroot/aurelia-app or /aurelia-app")
};
app.UseDefaultFiles(options);
app.UseStaticFiles();

我不确定这是否有效,但你可以试试

var options = new DefaultFilesOptions
{
   RequestPath = RequestPath = new PathString("/wwwroot/aurelia-app or /aurelia-app")
};
app.UseDefaultFiles(options);
app.UseStaticFiles();

这与网站的默认“索引”文件有关,而不是与提供静态文件有关。我猜你想提供
wwwroot
中的所有文件,而不仅仅是
wwwroot/aurelia应用程序中的文件。因此,将静态文件中间件的范围限定为
wwwroot/aurelia app
是行不通的

您最好的选择可能是将默认应用程序URL设置为
http://localhost:5000/aurelia-app/index.html
在您的
launchSettings.json
(项目->属性->launchSettings.json)中:

您也应该在IIS网站或Azure Web应用程序中应用此设置。 例如:

这与网站的默认“索引”文件有关,而不是与提供静态文件有关。我猜你想提供
wwwroot
中的所有文件,而不仅仅是
wwwroot/aurelia应用程序中的文件。因此,将静态文件中间件的范围限定为
wwwroot/aurelia app
是行不通的

您最好的选择可能是将默认应用程序URL设置为
http://localhost:5000/aurelia-app/index.html
在您的
launchSettings.json
(项目->属性->launchSettings.json)中:

您也应该在IIS网站或Azure Web应用程序中应用此设置。 例如:

是的,我尝试过使用
PhysicalFileProvider
解决方案,但出现了错误
PhysicalFileProvider未找到
,如何添加该错误?我使用的是VSCode,因此不确定如何在没有
nuget
的情况下添加外部依赖项。使用Microsoft.Extensions.FileProviders添加;谢谢,这就解决了这个问题。这听起来很愚蠢,但是我在
路径
目录
、和
路径字符串
对象上也遇到了错误。我应该添加什么来解决这个问题?我对aspnet core比较陌生。是的,我尝试过使用
PhysicalFileProvider
解决方案,但我发现错误
PhysicalFileProvider not found
,如何添加该错误?我使用的是VSCode,因此不确定如何在没有
nuget
的情况下添加外部依赖项。使用Microsoft.Extensions.FileProviders添加;谢谢,这就解决了这个问题。这听起来很愚蠢,但是我在
路径
目录
、和
路径字符串
对象上也遇到了错误。我应该添加什么来解决这个问题?我对aspnet core比较陌生。有道理。是的,我想为
wwwroot
中的所有文件提供服务。谢谢因此,我在我的
launchSettings.json
中添加了上面的一行,并且还更改了
launchUrl
,看起来像这样。不过,当我浏览到
localhost:5000
时,我得到了以下信息:有意义。是的,我想为
wwwroot
中的所有文件提供服务。谢谢因此,我在我的
launchSettings.json
中添加了上面的一行,并且还更改了
launchUrl
,看起来像这样。然而,当我浏览到
localhost:5000
时,我得到了以下信息: