在 .NET 8 razor Pages 应用程序中,当我将
ASPNETCORE_ENVIRONMENT
环境变量切换到 Production 时,我的应用程序工作正常,只是它不会加载不直接位于 wwwroot
文件夹中的 javascript 文件。
我的所有 appsettings.json 文件都是相同的,并且不会根据
ASPNETCORE_ENVIRONMENT
进行更改。
例如,我在路径
\Areas\Admin\Pages\Dashboard\Index.cshtml
中有一个razor页面,以及一个附带的javascript文件\Areas\Admin\Pages\Dashboard\Index.cshtml.js
。当 ASPNETCORE_ENVIRONMENT 设置为 Development
时效果很好,但是当设置为 Production
时,我在浏览器中收到以下错误:Failed to load resource: the server responded with a status of 404 (Not Found)
。
除此之外,
styles.css
(我假设是在构建过程中生成的)也无法在Production
环境中加载。
我的脚本通过以下方式包含:
@section Scripts {
<script src="~/Areas/Admin/Pages/Dashboard/Index.cshtml.js" asp-append-version="true"></script>
}
此外,检查发布文件夹后,脚本似乎已正确放置在其文件路径中:
\bin\Release\net8.0\publish\wwwroot\Areas\Admin\Pages\Dashboard\Index.cshtml.js
欢迎任何有关可能导致此问题的原因的想法。
在寻找与我的问题有些相似的任何问题后,我发现了这篇文章:生产环境中的AspCore 404。这个答案完全解决了我的问题:
我将
StaticWebAssetsLoader.UseStaticWebAssets(app.Environment, app.Configuration);
添加到我的 program.cs
文件中,所有静态文件现在可以在所有环境中正确加载。