迁移Asp.net MVC4从beta到4时,程序集引用丢失

时间:2012-12-17 05:51:15

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

我正在从Asp.net MVC4 beta到Asp.net MVC4进行迁移工作,但是我遇到了dll引用丢失的问题。请帮帮我。

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = System.Web.Http.RouteParameter.Optional }
            );


            routes.MapRoute(
               name: "Default",
               url: "{controller}/{action}/{id}",
               defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional }
           );
        }

上面的代码无法成功编译,Visual Studio说System.Web.Routing.RouteCollection' does not contain a definition for 'MapHttpRoute' and no extension method 'MapHttpRoute' accepting a first argument of type 'System.Web.Routing.RouteCollection' could be found (are you missing a using directive or an assembly reference?)

更重要的是经常发生这种问题。因为Asp.net MVC的版本在这些日子里变化如此频繁。 Windows Azure客户端ApI的版本也是如此。这是非常烦人的问题。我希望有人可以就如何处理它提出一些建议。感谢。

3 个答案:

答案 0 :(得分:3)

我通过在RouteConfig.cs中添加对System.Web.Http的引用来解决它。

答案 1 :(得分:3)

我遇到了同样的问题,但无法通过添加对System.Web.Http的引用来修复它。我仍然收到同样的错误:System.Web.Routing.RouteCollection' does not contain a definition for 'MapHttpRoute'

我相信这是因为在最新版本的MVC4中,不再支持MapHttpRoute。

事实证明,函数MapRoute在参数构造中是相同的。如果您将MapHttpRoute替换为MapRoute,则应该能够编译代码并继续前进。

答案 2 :(得分:0)

我通过在System.Web.Mvc.Html中添加对System.Web.Mvcweb.config的引用来解决此问题。

  <system.web>
    ...
    <httpRuntime targetFramework="4.5.2"/>
        <pages>
            <namespaces>
                <add namespace="System.Web.Mvc" />
                <add namespace="System.Web.Mvc.Html" />
            </namespaces>
        </pages>
    ...
  </system.web>