You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:27:43