我已将MVC站点升级到MVC版本4.0,.NET Framewrok版本4.5。执行此操作后,我从我的视图中收到运行时错误:
方法Microsoft.Web.Mvc.LinkExtensions.ActionLink:type参数'ContactCentre.Controllers.LogOnController'违反了类型参数'TController'的约束。
以下是抛出异常的代码:
Url.Action<LogOnController>(c => c.LogOff())
Constraint TController检查类型是否为Controller类型。我的控制器LogOnController继承自Controller,因此符合约束条件。
我认为问题在于我的库Microsoft.Web.Mvc版本。这是运行时版本v4.0.30319,版本3.0.0.0。我认为这意味着它的目标是MVC版本3。
是否存在MVC版本4兼容的Microsoft.Web.Mvc版本?还是我在错误的树上吠叫?欢迎任何帮助。
答案 0 :(得分:5)
Microsoft发布的Mvc4Futures NuGet软件包自2012年11月30日起可用。它包含Microsoft.Web.Mvc.dll版本4.0.0.0。
您可以按如下方式安装:
install-package mvc4futures
答案 1 :(得分:3)
我在配置文件中添加了一个assemblyBinding重定向,这解决了这个问题。
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="3.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
</assemblyBinding>