2012-06-02 10 views
12

Po aktualizacji do Visual Studio 2012 nie mogę już uzyskać dostępu do żadnego z moich ApiControllerów, zgłaszany jest następujący błąd:Błąd interfejsu API ASP.NET Web po aktualizacji do Visual Studio 2012 RC: Nie znaleziono metody: "Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation

Server Error in '/' Application. 

Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'. 

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.MissingMethodException: Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[MissingMethodException: Method not found: 'Void System.Net.Http.Headers.HttpHeaders.AddWithoutValidation(System.String, System.Collections.Generic.IEnumerable`1<System.String>)'.] 
    System.Web.Http.WebHost.HttpControllerHandler.AddHeaderToHttpRequestMessage(HttpRequestMessage httpRequestMessage, String headerName, String[] headerValues) +0 
    System.Web.Http.WebHost.HttpControllerHandler.ConvertRequest(HttpContextBase httpContextBase) +248 
    System.Web.Http.WebHost.HttpControllerHandler.BeginProcessRequest(HttpContextBase httpContextBase, AsyncCallback callback, Object state) +79 
    System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +268 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

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

Ktoś wie, jak to naprawić?

Odpowiedz

15

Masz odniesienie do starej wersji System.Net.Http w swoim projekcie. Aby to naprawić, przejdź do "Referencji" w swoim projekcie, usuń System.Net.Http i dodaj wersję dostarczoną z .NET 4.5. Że należy to zrobić.

Henrik

+1

I nie był w stanie aby znaleźć ten metog w wersji .net 4.0 RC, ale istnieje aktualizacja TryAddWithoutValidation –

+2

Zaktualizuj pakiety nugetów. – Zote

3

rozwiązanie tego i innych problemów związanych z RC right here.

+1

Aktualizowanie wszystkich pakietów, jak sugeruje ten post, sprawdziło się, ale RC zepsuł jakiś kod, który posiadałem. Rozwiązanie Henrika nie działa, co może być ironiczne, biorąc pod uwagę jego miejsce w zespole WebAPI! –

+0

Dzięki za referencję, mam nadzieję, że pomogło. – kamranicus

+0

Widzę, że Henrik Nielsen teraz popiera (?) Lub przynajmniej wspomina o tym rozwiązaniu na Twitterze: https://twitter.com/frystyk/status/210256371252346882 –

1

Naprawiłem to dla mnie.

http://forums.asp.net/t/1809919.aspx/1 

Metoda nie znaleziono: 'Pustka System.Net.Http.Headers.HttpHeaders.AddWithoutValidation (system.string, System.Collections.Generic.IEnumerable`1)'.

Rozwiązałem problem, wykonując następujące kroki. Nie jestem pewien, czy wszystkie są wymagane, ale zadziałało.

W Menedżerze pakietów NuGet odinstaluj pakiet Beta Web.API. Dodano odniesienia do System.Net.Http, System.Web.Http, & System.Web.Http.WebHost (zostały one usunięte w poprzednim kroku). Zainstalowany Json.Net przez NuGet.

Dodatkowo, jeśli twój projekt jest przeznaczony dla wersji 4.0 środowiska, musisz dołączyć nowy zestaw pakietów Microsoft ASP.Net Web API z NUGET, aby uzyskać zielone światło dla twojej kompilacji. Json.Net jest zależnością dla tych nowych pakietów, więc nie musisz instalować go osobno.

2

krok 1 Usuń poniższe referencje od projektu:

System.Net.Http, System.Web.Http, System.Web.Http.WebHost, System.Web.Http.Common & Systemu .Net.Http.Formatting

etap 2 dodać powyższy refefrences (z wyjątkiem System.Web.Http.Common & System.Net.Http.Formatting) od spodu położenia

  1. C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.AspNet.WebApi.Core.4.0.20505.0 \ lib \ net40

  2. C: \ Program Pliki (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Pakiety \ Microsoft.AspNet.WebApt.WebHost.4.0.20505.0 \ lib \ Net40

  3. C: \ Program Files (x86) \ Microsoft ASP. NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Net.Http.2.0.20505.0 \ lib \ net40

i dodać jeszcze jedną nową dll Newtonsoft.Json.dll z

  1. C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Newtonsoft.Json.4.5.1 \ lib \ net40
+0

Och, to działało na mój problem, dziękuję, dziękuję, dziękuję. –

Powiązane problemy