12

PCにVS11Beta、.net 4.5、MVC4ベータをインストールしました。最新の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 にインストールされているプログラムを見ると、MVC 4 の「アプリケーション」が 3 つインストールされていることがわかりました。

  1. MVC 4 VS 2010 ツール
  2. MVC4
  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

ベータ版から 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リリース候補。

そして、私はそれを行い、エラーを取り除きました。

その理由は、アプリが 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 に答える