升级到MVC 4.0后Microsoft.Web.Mvc出错

时间:2012-09-13 06:41:35

标签: asp.net-mvc asp.net-mvc-4

我已将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版本?还是我在错误的树上吠叫?欢迎任何帮助。

2 个答案:

答案 0 :(得分:5)

Microsoft发布的Mvc4Futures NuGet软件包自2012年11月30日起可用。它包含Microsoft.Web.Mvc.dll版本4.0.0.0。

您可以按如下方式安装:

  • 打开程序包管理器控制台
  • 从“默认项目”菜单中选择您的Web应用程序
  • 运行以下命令: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>