我最近将我的网站更新为MVC 5.它在我的开发机器上运行良好。当我转移到支持.Net 4.0的共享主机上,我的MVC 4网站工作得很好。部署后,我收到了以下异常。
Method not found: 'System.Web.WebPages.IDisplayMode
System.Web.Mvc.ControllerContext.get_DisplayMode()'.
我尝试了一些问题来解决问题,但没有人帮忙。
我的假设是.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>
答案 0 :(得分:8)
升级到MVC 5时遇到了同样的问题。
通过删除 Microsoft.Web.Mvc.FixedDisplayModes.dll 解决了这个问题。 dll是MVC4的旧版本,在使用MVC5时可以安全地删除它。
我从这里得到了这个解决方案:http://larre.fixstar.net/2014/10/sitecore-mvc-error-idisplaymode/
答案 1 :(得分:2)
为了将您的项目升级到MVC 5,我会确保您followed all the steps。另外,请检查以下内容:
另外,我相信MVC5是.NET 4.5,而不是4.0(但我找不到列出所需.NET版本的任何地方)。如果您的主机是.NET 4.0,这也可能是一个问题。
可能是您的共享主机没有在服务器上的GAC中安装这些MVC 5项。因此,当MVC 4工作时,MVC 5因组装负载/匹配错误而失败。
答案 2 :(得分:2)
我没有足够的“声誉”来支持或添加评论,但Sankar的解决方案对我有用:
通过删除Microsoft.Web.Mvc.FixedDisplayModes.dll解决了这个问题。 dll是MVC4的旧版本,在使用MVC5时可以安全地删除它。
答案 3 :(得分: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>
当我评论此部分时,错误消失了,项目似乎运行正常。