Visual Studio 2012 RC无法加载类型System.Web.Http.RouteParameter。

12
我在电脑上安装了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

将其设置为复制到本地,但它仍然从gac_msil加载。我该如何覆盖它?
3个回答

9

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

  1. MVC 4 VS 2010 工具
  2. MVC 4
  3. MVC 4(Bundle)

我卸载了“MVC 4”应用程序,然后我的项目就正常工作了。


感谢@roet的补充。在我提出这个问题的时候,我已经卸载了我能找到的所有东西。虽然对我没有用,但我很高兴它对你有用。 - Eonasdan

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

在另一台机器上,将RC版本安装在Beta版本之上是可行的。希望这能对未来的某个人有所帮助。

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


1
是的,它可以工作。@FatAlbert请确保您替换所有程序集,包括XML文件。 - om471987
System.Web.Http在我的GAC_MSIL下不存在。 - Kyle

6

我已经尝试了我在我的原始帖子中提到的DEVPATH。 MVC 4 RC附带2012 RC。没有单独为2012下载此选项。还请查看最新编辑。 - Eonasdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接