在使用 Abp 开发 Web 网站时,我们可以借助其虚拟文件系统通过 abp-script
或者 abp-style
标签将 Pages 或 Views 目录下默认不允许访问的 JavaScript 、Style Sheet 等文件引入到页面中。
当我们要开发一个多 Area 的 MVC 网站时,即便通过以下代码设置好了复制资源文件到输出目录,却依然会得到一个 Abp 框架的报错。
<ItemGroup> <None Update="Areas\**\*.js"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Update="Areas\**\*.css"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup>
报错内容为:
Volo.Abp.AbpException: Could not find the bundle file '/Areas/Payment/Views/Home/Index.js' from IWebContentFileProvider at Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers.AbpTagHelperResourceService.ProcessAsync(ViewContext viewContext, TagHelperContext context, TagHelperOutput output, List`1 bundleItems, String bundleName) at Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers.AbpBundleTagHelperService`2.ProcessAsync(TagHelperContext context, TagHelperOutput output) at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)
这是因为以上功能通过一个名为 AbpAspNetCoreContentOptions 的选项控制,将下列代码添加至 Web 项目模块的 ConfigureServices
方法中即可解决该问题。
Configure<AbpAspNetCoreContentOptions>(options => { options.AllowedExtraWebContentFolders.Add("/Areas"); });