从父目录运行网站时,asp.net core MVC 静态文件给出 404 错误

Ale*_*ang 3 command-line-interface asp.net-core

我最近有一个无法理解的错误。

当我输入网站的根路径并使用命令运行它时,我将 ASP.NET Core MVC Web 应用程序发布到文件夹

d:\publish> dotnet WebSite.dll
Run Code Online (Sandbox Code Playgroud)

一切都很好。

但是当我转到该网站的父文件夹,然后使用以下命令运行它时。

d:\> dotnet ./publish/WebSite.dll
Run Code Online (Sandbox Code Playgroud)

网站可以访问,但是所有静态文件都报404错误在此输入图像描述,

我想知道,为什么?我该如何解决这个问题?

Ale*_*ang 8

因为UseStaticFiles使用来自的路径env.ContentRootPath,但env.ContentRootPath会采用运行dotnet命令的路径,因此物理路径出错。

我已重新分配基本物理路径,如下所示:

app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider = new PhysicalFileProvider($@"{AppDomain.CurrentDomain.BaseDirectory}/wwwroot")
});
Run Code Online (Sandbox Code Playgroud)

并且所有静态资源都会被重新访问。