Umbraco CMS v9访问新建页面报IEnumerable未引用程序集错误如何解决
Umbraco CMS v9 访问自定义页面报错解决方案
问题根因说明
Umbraco 9 基于 ASP.NET Core 5.0 构建,不再使用传统 .NET Framework 的 web.config 编译配置逻辑:
- 你修改的是项目构建/运行时自动生成的 web.config,每次启动都会被覆盖
- 你配置的
targetFramework="4.5"是 .NET Framework 版本标识,和 Umbraco 9 依赖的 .NET 5 不兼容
修复步骤
方案1:优先根因修复(无需修改web.config)
- 先排查视图属性调用错误:注释视图里的
<div>@Model.Check</div>代码,启动项目看页面是否正常打开,确认报错是否由该属性调用触发 - 检查 HomePage 文档类型的
Check字段类型:如果该字段为多选下拉、媒体集合、多内容项等返回IEnumerable类型的字段,不能直接输出整个集合,需要遍历渲染,示例代码:
@* 假设Check为字符串集合类型 *@ @if (Model.Check != null && Model.Check.Any()) { foreach(var item in Model.Check) { <div>@item</div> } }
- 进入Umbraco后台「设置」-「Models Builder」,点击「生成模型」后重启项目,确保发布的内容模型为最新版本
- 检查项目
.csproj文件,确认目标框架为net5.0,所有 Umbraco 相关 NuGet 包版本一致且无缺失
方案2:自定义web.config配置(如果你确实需要添加程序集引用)
不要修改输出目录下的自动生成web.config,直接在项目根目录新建/修改 web.config 文件,构建时会自动合并配置不会被覆盖,正确配置示例:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetFramework="net5.0"> <assemblies> <add assembly="System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"/> </assemblies> </compilation> </system.web> </configuration>
内容的提问来源于stack exchange,提问作者ThisIsNicola
相关产品推荐
相关产品推荐

