.NET 4.6.2项目部署至IIS后出现ViewBag错误求助
.NET 4.6.2 MVC项目部署到IIS后ViewBag报错的解决方案
以下是针对该问题的具体排查和修复步骤:
1. 重点检查Views文件夹下的web.config
该文件直接控制Razor视图的编译规则,是解决ViewBag识别问题的核心:
- 确保
system.web.webPages.razor节点配置正确,指定正确的MVC版本和视图基类:
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> <add namespace="你的项目命名空间" /> </namespaces> </pages> </system.web.webPages.razor>
注意:Version需与项目引用的System.Web.Mvc版本完全匹配,可在NuGet包管理器中查看当前版本。
- 确认
system.web节点下的编译配置包含MVC程序集:
<system.web> <compilation debug="true" targetFramework="4.6.2"> <assemblies> <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> </compilation> <httpRuntime targetFramework="4.6.2" /> </system.web>
2. 核查根目录web.config的程序集绑定配置
确保程序集重定向规则统一,避免版本冲突:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> </dependentAssembly> <!-- 需同步添加System.Web.WebPages、System.Web.Razor等相关程序集的重定向 --> </assemblyBinding> </runtime>
3. 配置IIS应用程序池
- 打开IIS管理器,找到对应网站的应用程序池,进入「高级设置」:
- 将
.NET CLR版本设置为v4.0.30319(对应.NET 4.6.2); - 将「托管管道模式」设为集成模式(MVC项目默认依赖集成模式的路由机制);
- 确保应用程序池标识拥有网站目录的读写权限(如使用
ApplicationPoolIdentity,需给部署目录添加该用户的权限)。
- 将
4. 清理并重新发布项目
- 在Visual Studio中依次执行「清理解决方案」→「重新生成解决方案」;
- 发布时选择「文件系统」部署到IIS网站目录,确保Views文件夹下的web.config被完整复制;
- 部署完成后重启IIS应用程序池和网站,清除IIS缓存。
5. 移除手动添加的@inherits声明
若Views/web.config配置正确,无需在每个视图或_ViewStart.cshtml中手动添加@inherits System.Web.Mvc.WebViewPage或@inherits System.Web.Mvc.ViewStartPage,多余的声明可能导致视图基类冲突,建议全部移除。
若问题仍存在,可通过IIS事件查看器获取详细错误日志,排查是否存在程序集缺失、权限不足或版本混合问题。
内容的提问来源于stack exchange,提问作者Ehsan Afzal
相关产品推荐
相关产品推荐

