Подтвердить что ты не робот

Visual studio 2012 RC Не удалось загрузить тип System.Web.Http.RouteParameter

У меня была версия VS 11 Beta,.net 4.5 и MVC 4, установленная на моем ПК. Я только что загрузил последний RC, и теперь я получаю это сообщение об ошибке, когда пытаюсь запустить веб-проекты. Я попытался переустановить .net 4.5 и удалить и смонтировать VS 12 RC, но это не сработало. Я попробовал предложение здесь, которое тоже не работает.

Stack

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. Как это сделать?

4b9b3361

Ответ 1

Теперь ответ заключается в замене 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 работало на другой машине. Надеюсь, это поможет кому-то в будущем.

Я обновлю, если найду лучший ответ

Ответ 2

У меня была та же проблема, и я нашел этот вопрос во время поиска по ошибке. Когда я посмотрел на установленные программы на своих окнах, я увидел, что было установлено 3 приложения MVC:

  • Инструменты MVC 4 VS 2010
  • MVC 4
  • MVC 4 (Bundle)

Я удалил приложение "MVC 4", а затем мои проекты работали нормально.

Ответ 3

Я предлагаю вам также перейти с бета-версии MVC4 на MVC4 RC: http://www.asp.net/mvc/mvc4 И в соответствии с примечаниями к выпуску: "Вы можете обновить предварительный просмотр и бета-версию ASP.NET MVC 4 до кандидата на выпуск ASP.NET MVC 4 без деинсталляции".

И я сделал именно это и избавился от ошибки.

Причина в том, что ваше приложение указывает на старую бета-версию MVC4 в GAC.

Альтернативой является использование переменной среды DEVPATH, указанной в этой ссылке. http://www.christophdebaene.com/blog/2012/04/06/building-the-source-code-of-asp-net-web-api/

Винсент