.NET Core 2.0中bundleconfig.json无法正常工作的问题求助
我来帮你排查这个.NET Core 2.0中捆绑资源加载失败的问题,结合常见的配置坑,给你几个实用的排查方向:
首先去项目的wwwroot/js目录下看看,是否真的生成了site.min.js文件。如果没有生成,那问题出在构建打包环节,先检查你的bundleconfig.json配置是否正确,比如输出路径有没有写错:
{ "outputFileName": "wwwroot/js/site.min.js", // 确保这个路径是正确的 "inputFiles": [ "wwwroot/js/site.js", "wwwroot/js/**/*.js" // 确认输入文件的路径能覆盖到你要打包的JS文件 ] }
如果配置没问题,右键bundleconfig.json,选择「Bundler & Minifier」→「Update Bundles」手动触发一次打包,看看是否能生成min文件。
右键你的项目,选择「编辑.csproj文件」,确认里面有以下配置,确保构建工具能识别bundleconfig文件:
<ItemGroup> <BundlerMinifierConfig Include="bundleconfig.json"> <Visible>false</Visible> </BundlerMinifierConfig> </ItemGroup>
如果没有这段配置,手动添加后再重新构建项目。
确保你在视图中的引用路径和实际生成的文件路径一致,尽量用~/指向wwwroot根目录,避免绝对路径带来的环境问题:
<script src="~/js/site.min.js"></script>
仔细检查拼写,比如有没有把.js写成.jss这类低级错误,或者路径层级写错(比如多写了一个/js/)。
在Startup.cs的Configure方法中,必须添加静态文件中间件,否则wwwroot下的资源无法被访问到,而且这个中间件要放在路由配置之前:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // 其他中间件... app.UseStaticFiles(); // 必须添加这一行,且在UseMvc之前 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
有时候旧的构建缓存会导致异常,试试以下步骤:
- 右键项目→「清理」
- 手动删除项目根目录下的
bin和obj文件夹 - 重新构建项目
之后再去wwwroot目录确认min文件是否生成,然后用Ctrl+F5强制刷新浏览器(避免缓存旧的无效请求)测试。
错误中显示的请求地址是https://localhost:44301,去项目的Properties/launchSettings.json里确认applicationUrl配置的HTTPS端口是否和这个一致:
"applicationUrl": "https://localhost:44301;http://localhost:5000"
如果端口不匹配,修改后重启应用再测试。
内容的提问来源于stack exchange,提问作者user2370664

