visual studio 2012 RC无法加载System.Web.Http.RouteParameter类型

时间:2012-06-07 20:18:11

标签: asp.net-mvc-4 .net-4.5 visual-studio-2012

我的PC上安装了VS 11 Beta,.net 4.5和MVC 4 beta。我刚下载了最新的RC,现在我在尝试运行Web项目时收到此错误消息。我尝试重新安装.net 4.5并卸载和树脂安装VS 12 RC,但这没有用。我试过了 建议here也没有用。

堆栈

Could not load type 'System.Web.Http.RouteParameter' from assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.TypeLoadException: Could not load type 'System.Web.Http.RouteParameter' from assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Source Error:


Line 26:                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
Line 27:             );
Line 28:         }
Line 29:     }
Line 30: }


Source File: c:\projects\testNew\testNew\App_Start\RouteConfig.cs    Line: 28

Stack Trace:


[TypeLoadException: Could not load type 'System.Web.Http.RouteParameter' from assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.]
   testNew.RouteConfig.RegisterRoutes(RouteCollection routes) in c:\projects\testNew\testNew\App_Start\RouteConfig.cs:28
   testNew.MvcApplication.Application_Start() in c:\projects\testNew\testNew\Global.asax.cs:25

[HttpException (0x80004005): Could not load type 'System.Web.Http.RouteParameter' from assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9841101
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Could not load type 'System.Web.Http.RouteParameter' from assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9850940
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17626 

修改6

我使用了fuslogvw并发现该项目引用了System.Web.Http.dll来自此处

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Http\v4.0_4.0.0.0__31bf3856ad364e35

而不是我的项目。重命名此文件使我的项目工作,但我显然无法在我的共享主机站点上执行此操作。

我从

手动引用了dll
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

并将其设为Copy to Local。它仍然从gac_msil加载。我该如何覆盖它?

3 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,并在搜索错误时发现了这个问题。 当我查看窗口上安装的程序时,我看到安装了3个MVC 4'应用程序':

  1. MVC 4 VS 2010工具
  2. MVC 4
  3. MVC 4(Bundle)
  4. 我卸载了“MVC 4”应用程序,然后我的项目工作正常。

答案 1 :(得分:8)

目前答案是从文件夹

替换dll
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

进入

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Http\v4.0_4.0.0.0__31bf3856ad364e35

在Beta的顶部升级到RC在另一台机器上工作。我希望这有助于将来的某个人。

如果我找到更好的答案,我会更新

答案 2 :(得分:6)

我建议您从MVC4 Beta升级到MVC4 RC:http://www.asp.net/mvc/mvc4 根据发行说明:“您可以在不卸载的情况下将ASP.NET MVC 4开发人员预览版和Beta版升级到ASP.NET MVC 4 Release Candidate。”

我做到了这一点并摆脱了错误。

原因是您的应用程序指向GAC中的旧MVC4 Beta。

另一种方法是使用此链接中提到的DEVPATH环境变量。 http://www.christophdebaene.com/blog/2012/04/06/building-the-source-code-of-asp-net-web-api/

文森特