如何在本地部署 Asp.Net Core 6 + Angular SPA

How deploy Asp.Net Core 6 + Angular SPA locally

问题:

我使用 angular 模板为 visual studio 创建了一个 angular 前端应用程序和一个 asp.net 核心后端应用程序。

我的目标:

我想分享我的后端 asp.net 核心 6 应用程序和我的 Angular 13 前端应用程序,以便有人可以在另一台计算机上测试该应用程序,而无需构建或安装依赖项。

有什么方法可以让 asp.net 核心应用程序为 index.html 文件提供服务吗?这样就够了吗? 我将如何实现这一目标?

到目前为止我试过这个:

app.UseStaticFiles(new StaticFileOptions {
    FileProvider = new PhysicalFileProvider(builder.Environment.ContentRootPath),
    RequestPath = "/index.html"
});

app.UseRouting();

app.MapFallbackToFile("index.html"); ;

app.MapHub<MainHub>("/main");

然后我 运行 使用以下命令来构建应用程序:

dotnet build -r win-x64 -c Release

我打开了生成的 .exe 文件并打开了浏览器到 localhost:5000 uri。

然而我得到的只是一个 404 Not Found 状态码。

我想通了。

我错误地 运行 构建命令而不是发布应用程序的命令。

以下命令:

dotnet publish -r win-x64 -c Release

成功了。它在 Release 构建目录文件夹中创建了一个 publish 文件夹。在标准网络内容路径 wwwroot 中,有所有必需的 angular 文件,网络应用程序需要提供服务。

然后我将代码更改为:

app.UseStaticFiles();
app.UseRouting();

app.MapFallbackToFile("index.html", new StaticFileOptions() {
    ServeUnknownFileTypes = true,
    FileProvider = new PhysicalFileProvider(builder.Environment.WebRootPath)
});

app.MapHub<MainHub>("/main");

然而,这似乎没有必要,因为这些是标准配置。