10

升级 ASP.NET MVC 版本后出现此问题。

'System.Web.Mvc.ViewPage' 类型不明确:它可能来自程序集......

4

3 回答 3

12

我看到您已经为自己提供了答案,但另一种解决方案是使用<runtime>重定向依赖程序集并指向正确程序集的元素更新您的 web.config:

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

请注意,对于大多数程序集,从 NuGet 更新您的项目会自动为您执行相同的操作。

于 2013-07-14T10:53:24.800 回答
5

在解决方案资源管理器中,单击参考 > System.Web.Mvc。单击属性并设置 Copy Local = True。

这样,您将确保在您的项目中获得正确版本的 MVC,而不依赖于 GAC 中安装的任何版本。此方法还使您能够对 MVC DLL 进行二进制部署。

于 2013-07-14T01:17:18.987 回答
2

这为我解决了问题......

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Abstractions" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Routing" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
于 2015-01-20T09:30:00.277 回答