2012-06-02 9 views
12

Después de actualizar a Visual Studio 2012 ya no puedo acceder a ninguno de mis ApiControllers, se produce el siguiente error:Error de la API web ASP.NET después de actualizar a Visual Studio 2012 RC: Método no encontrado: '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 

¿Alguien sabe cómo solucionar esto?

Respuesta

15

Tiene una referencia a una versión anterior de System.Net.Http en su proyecto. Para solucionar esto, vaya a "Referencias" en su proyecto, elimine System.Net.Http y agregue la versión que viene con .NET 4.5 en su lugar. Deberias hacer eso.

Henrik

+1

yo no era capaz para encontrar este methog en la versión .net 4.0 RC, pero hay un TryAddWithoutValidation –

+2

Actualice sus paquetes nuget. – Zote

3

solución a este y otros problemas relacionados con el RC right here.

+1

Actualizar todos los paquetes como esta publicación sugiere que funcionó para mí, pero el RC rompe el código de agrupación que tenía. La solución de Henrik no funcionó, lo que puede ser irónico dado su lugar en el equipo de WebAPI. –

+0

Gracias por la referencia, espero que haya sido útil. – kamranicus

+0

Veo que Henrik Nielsen ahora respalda (?) O al menos menciona esta solución en Twitter: https://twitter.com/frystyk/status/210256371252346882 –

1

Esto lo arregló para mí.

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

Método no encontrado: 'System.Net.Http.Headers.HttpHeaders.AddWithoutValidation Void (System.String, System.Collections.Generic.IEnumerable`1)'.

Lo resolví con los siguientes pasos. No estoy seguro de si se requieren todos ellos, pero funcionó.

En NuGet Package Manager, desinstaló el paquete Web.API Beta. Se agregaron referencias a System.Net.Http, System.Web.Http, & System.Web.Http.WebHost (estas se eliminaron en el paso anterior). Json.Net instalado a través de NuGet.

Como complemento, si su proyecto tiene como objetivo la versión 4.0 del marco, debe incluir el nuevo conjunto de paquetes API de Microsoft ASP.Net Web de NUGET para obtener luz verde para su compilación. Json.Net es una dependencia de estos nuevos paquetes, por lo que no es necesario instalarlo por separado.

2

paso 1 Retire las referencias a continuación de su proyecto:

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

paso 2 Añadir los refefrences anteriores (excepto el System.Net.Http.Formatting System.Web.Http.Common &) desde abajo ubicación

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

  2. C: \ Program Archivos (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Paquetes \ Microsoft.AspNet.WebApi.WebHost.4.0.20505.0 \ lib \ net40

  3. C: \ Archivos de programa (x86) \ Microsoft ASP. NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Net.Http.2.0.20505.0 \ lib \ net40

y agrega uno más nuevo dll Newtonsoft.Json.DLL desde

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

Oh, eso funcionó para mi problema, gracias, gracias, gracias. –

Cuestiones relacionadas