183 votos

No se ha podido cargar el archivo o ensamblaje 'System.Web.Http 4.0.0 tras la actualización de 2012 a 2013

Hice la actualización según. http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

Me sale el error. ¿Alguien más tiene este error?

Error del servidor en la aplicación '/'.

No se pudo cargar el archivo o ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del ensamblaje localizado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)
Descripción: Se ha producido una excepción no controlada durante la ejecución de la petición web actual. Por favor, revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

Detalles de la excepción: System.IO.FileLoadException: No se pudo cargar el archivo o ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado en definición del manifiesto del ensamblaje localizado no coincide con la referencia. (Excepción de HRESULT: 0x80131040)

Error de origen:

Línea 48: Línea 49: Línea 50: } Línea 51: Línea 52: protected void Solicitud_de_empeño(objeto sender, EventArgs e)

Archivo de origen: d: \SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs Línea: 50

Trazado de la carga de la asamblea: La siguiente información puede ser útil para determinar por qué el ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' no se pudo cargar.

\=== Información de estado previa a la vinculación === LOG: DisplayName = System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Completamente especificado) LOG: Appbase = file:///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG: Initial PrivatePath = D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\bin Conjunto de llamada : ThirdPartyWebAPI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: Este bind se inicia en el contexto de carga por defecto. LOG: Utilizando el archivo de configuración de la aplicación: D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\web.config LOG: Usando archivo de configuración del host: C:\Users\michalc\Documents\IISExpress\config\aspnet.config LOG: Utilizando archivo de configuración de la máquina de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Referencia posterior a la política: System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: Intentando descarga de la nueva URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/Root/9184b2ea/c6d4b139/System.Web.Http.DLL. LOG: Intentando descargar una nueva URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/Root/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http.DLL. LOG: Intentando descargar una nueva URL file:///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN: La comparación del nombre del ensamblaje ha dado lugar a una falta de coincidencia: Mayor ERR de versión: No se ha podido completar la configuración del ensamblaje (hr = 0x80131040). El sondeo ha finalizado.

Rastro de pila:

[FileLoadException: No se pudo cargar el archivo o ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del conjunto localizado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)] ThirdPartyWebAPI.WebApiApplication.Application_Start() en d: \SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs :50

[HttpException (0x80004005): No se pudo cargar el archivo o ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. El manifiesto del ensamblaje ubicado en definición del manifiesto del ensamblaje localizado no coincide con la referencia. (Excepción de HRESULT: 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9935033
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): No se pudo cargar el archivo o ensamblaje 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado en definición del manifiesto del ensamblaje localizado no coincide con la referencia. (Excepción de HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254


Información sobre la versión: Microsoft .NET Framework Versión:4.0.30319; ASP.NET Versión:4.0.30319.18408

288voto

Pathoschild Puntos 176

Lo he arreglado con reinstalar el paquete NuGet que corrige las dependencias rotas. Desde el gestor de paquetes, ejecute Update-Package Microsoft.AspNet.WebApi -reinstall .

84voto

Catto Puntos 756

Para resolver el error Could not load file or assembly 'System.Web.Http' utilice NuGet para instalar el WebHost de la API 2.1.

En el explorador de soluciones, en las referencias, haga clic con el botón derecho y seleccione administrar paquetes nuget. (si no está ahí instale nuget)

enter image description here

En la ventana de gestión de paquetes NuGet, en el lado izquierdo, haga clic en línea y, en la parte superior derecha, busque Web Host e instale Microsoft ASP.NET Web API 2.1 Web Host. (Una vez instalado el botón de instalación cambiará a una marca verde)

Después de eso el proyecto se recargará y cuando se construya de nuevo el error se resolverá y el proyecto se depurará y se ejecutará. El error desaparecerá y puede ser 'El recurso no puede ser encontrado. Solo hay que añadir la url ( por ejemplo de localhost:52088/ a localhost:52088api/productos )

Su pregunta fue buena y me ayudó.

Espero que esta respuesta sea de ayuda.

61voto

Aliostad Puntos 47792

Hay que añadir redireccionamientos de montaje:

<configuration>

   ....

   <runtime>
      <assemblyBinding>
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      </assemblyBinding>
   </runtime>

   ...

</configuration>

Lo más probable es que tengas que hacer esto para unos cuantos montajes más como el alojamiento web, etc.

18voto

Nathan Long Puntos 820

O puede hacerlo desde la consola del gestor de paquetes NuGet

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Y entonces podrá añadir la referencia a System.Web.Http.WebHost 5.0

17voto

jhilden Puntos 759

Cuando instalé la ayuda de Web Api 2.2 comenzó este error. Añadí esto al web.config y se solucionó mi problema.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X