12

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

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. 我该如何覆盖这个?

4

3 回答 3

9

我有同样的问题,并在谷歌搜索错误时发现了这个问题。当我查看 Windows 上已安装的程序时,我看到安装了 3 个 MVC 4“应用程序”:

  1. MVC 4 VS 2010 工具
  2. MVC 4
  3. MVC 4(捆绑包)

我卸载了“MVC 4”应用程序,然后我的项目运行良好。

于 2012-07-16T09:14:14.663 回答
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 在另一台机器上工作。我希望这对将来的某人有所帮助。

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

于 2012-06-12T14:41:25.483 回答
6

我建议您也从 MVC4 Beta 升级到 MVC4 RC:http ://www.asp.net/mvc/mvc4 并且根据发行说明:'您可以将 ASP.NET MVC 4 Developer Preview 和 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/

文森特

于 2012-06-09T12:22:43.150 回答