4

我最近将我的网站更新为 MVC 5。它在我的开发机器上运行良好。当我转移到支持 .Net 4.0 的共享主机上时,我的 MVC 4 站点工作得很好。部署后,我收到以下异常。

 Method not found: 'System.Web.WebPages.IDisplayMode
 System.Web.Mvc.ControllerContext.get_DisplayMode()'.

我尝试了几件事来解决问题,但没有任何帮助。

  1. 如果 DisplayMode 是仅在 MVC 5 中添加的属性,我检查了文档。我错了。它也存在于 MVC 4 中,正如在 msdn 文档中所检查的那样。
  2. MSDN 上奇怪的事情,当我检查 System.Web.Mvc.ControllerContext 类型时,它指向我这里。这里要注意的是,当您将 Framework 版本更改为 4.0 时,它不会在 ControllerContext 上显示相同的属性。感觉有点奇怪。

我的假设是 .Net 4.5 & MVC 5.0 组合可能没有这种方法。

我的程序集绑定。

 <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor"
        publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>        
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
4

3 回答 3

10

我在升级到 MVC 5 时遇到了同样的问题。

这是通过删除Microsoft.Web.Mvc.FixedDisplayModes.dll解决的。该 dll 是 MVC4 的旧版修复程序,在使用 MVC5 时可以安全地删除它。

我从这里得到了这个解决方案:http: //larre.fixstar.net/2014/10/sitecore-mvc-error-idisplaymode/

于 2014-11-04T15:59:10.640 回答
2

我会确保您按照所有步骤将您的项目升级到 MVC 5。另外,请检查以下内容:

  1. 您的 web.config 中有正确的程序集绑定重定向。
  2. 您的意见文件夹中的 web.config 指向正确版本的 System.Web.WebPages 程序集(应该是 3.0.0.0)。
  3. 您已在项目中将新的 MVC 5 项(System.Web.WebPages、System.Web.Mvc、System.Web.Helpers 等)设置为 Copy Local = True。

另外,我相信 MVC5 是 .NET 4.5,而不是 4.0(但我找不到任何列出所需 .NET 版本的地方)。如果您的主机是 .NET 4.0,这也可能是一个问题。

可能是您的共享主机没有在服务器的 GAC 中安装这些 MVC 5 项目。结果,当 MVC 4 工作时,MVC 5 由于错误的程序集加载/匹配而失败。

于 2013-11-13T14:56:13.763 回答
0

在使用 Nuget 安装 Elmah.MVC 后,我在新的 MVC 5 项目上收到了相同的错误消息。似乎 elmah 安装在 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-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
</runtime>

当我注释掉这一部分时,错误消失了,项目似乎运行正常。

于 2014-01-30T21:32:53.197 回答