【问题标题】:Serve static files from a folder inside wwwroot从 wwwroot 中的文件夹提供静态文件
【发布时间】:2023-03-18 00:31:02
【问题描述】:

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

.
├── Controllers
├── Dockerfile
├── Models
├── Program.cs
├── Properties
├── README.md
├── Services
├── Startup.cs
├── Views
├── appsettings.json
├── bundleconfig.json
├── project.json
├── web.config
└── wwwroot

wwwroot 内部,我使用Aurelia cli 建立了一个Aurelia 项目。结构如下:

.
├── aurelia-app
├── css
├── images
├── js
└── temp.html

我的aurelia-app 有我想要服务的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 文件?

【问题讨论】:

  • 是的,我已经尝试使用PhysicalFileProvider 解决方案,但我收到错误PhysicalFileProvider not found,我该如何添加?
  • 我正在使用VSCode,所以不知道如何在没有nuget的情况下添加外部依赖。
  • 使用 Microsoft.Extensions.FileProviders 添加;
  • 谢谢,解决了这个问题。这听起来很傻,但我在PathDirectoryPathString 对象上也遇到了错误。我应该添加什么来解决这个问题?我对 aspnet core 比较陌生。

标签: c# asp.net-mvc asp.net-core aurelia


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这更多地与您网站的默认“索引”文件有关,而不是与提供静态文件有关。我猜你想提供所有wwwroot 中的文件,而不仅仅是wwwroot/aurelia-app 中的文件。因此,将静态文件中间件的范围限定为 wwwroot/aurelia-app 将不起作用。

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

    "iisExpress": {
      "applicationUrl": "http://localhost:5000/aurelia-app/index.html",
    }
    

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

    【讨论】:

    • 有道理。是的,我想提供wwwroot 中的所有文件。谢谢。所以我在我的launchSettings.json中添加了上面的行,并且还更改了launchUrl,所以它看起来像this。不过,当我浏览到 localhost:5000 时,我得到以下信息:imgur.com/a/PgK45
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2020-08-08
    • 2014-06-06
    • 2019-09-19
    • 2016-01-06
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多