c# - framework - odata web api filter
No se pudo cargar el archivo o ensamblado ''System.Web.Http 4.0.0 despuĆ©s de la actualizaciĆ³n de 2012 a 2013 (25)
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 ensamblado ''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 no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. 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 ensamblado ''System.Web.Http, Versión = 4.0.0.0, Cultura = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Error de fuente:
Línea 48: Línea 49: Línea 50:} Línea 51: Línea 52: vacío protegido Application_BeginRequest (remitente del objeto, EventArgs e)
Archivo de origen: d: / SM / 7.4Test / WebAPIServerV2 / ThirdPartyWebAPI / Global.asax.cs Línea: 50
Rastreo de carga de ensamblaje: la siguiente información puede ser útil para determinar por qué no se pudo cargar el ensamblado ''System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35''.
=== Información de estado de enlace previo === REGISTRO: DisplayName = System.Web.Http, Versión = 4.0.0.0, Cultura = neutro, PublicKeyToken = 31bf3856ad364e35 (Completamente especificado) LOG: Appbase = archivo: /// 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 enlace se inicia en el contexto de carga predeterminado. LOG: Usando el archivo de configuración de la aplicación: D: / SM / 7.4Test / WebAPIServerV2 / ThirdPartyWebAPI / web.config LOG: Usando el archivo de configuración del host: C: / Users / michalc / Documents / IISExpress / config / aspnet.config LOG: Usando la configuración de la máquina archivo 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 descargar el nuevo archivo URL: /// C: /Windows/Microsoft.NET/Framework/v4 .0.30319 / Archivos temporales ASP.NET / root / 9184b2ea / c6d4b139 / System.Web.Http.DLL. LOG: Intentando descargar el nuevo archivo URL: /// 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 el nuevo archivo URL: /// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN: La comparación del nombre del ensamblado resultó en la falta de coincidencia: Versión principal ERR: Error al completar la configuración del ensamblaje (hr = 0x80131040). Sonda terminada.
Stack Trace:
[FileLoadException: no se pudo cargar el archivo o ensamblado ''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 no coincide con la referencia de 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 ensamblado ''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 no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext context, aplicación HttpApplication) +9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, HttpContext context, MethodInfo [] manejadores) +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 ensamblado ''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 no coincide con la referencia de ensamblaje. (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 de la versión: Microsoft .NET Framework Version: 4.0.30319; Versión ASP.NET: 4.0.30319.18408
¡¡¡SÍ!!!
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
Funciona bien en mi caso ... thnkz
¡Encontré la solución! Borre la carpeta llamada paquete en el directorio del proyecto y luego recupérela para ejecutarla.
Como otros han dicho, simplemente reinstale el paquete MVC en su proyecto web usando nuget, pero asegúrese de agregar el paquete MVC a cualquier proyecto que dependa del proyecto web, como las pruebas unitarias. Si construyes cada proyecto incluido individualmente, verás que los brujos requieren la actualización.
Cuando instalé Web Api 2.2, se inició este error. Añadí esto al web.config y resolvió 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>
En mi caso, en realidad me faltaba mi web.config
conjunto, que tenía los redireccionamientos de enlace apropiados. La restauración de web.config
resolvió el error.
Esto podría ayudar a alguien.
Decidí ir con la aplicación MVC4.
ejecutar proyecto, trabajado
Luego instalé algunos paquetes como,
Microsoft ASP.NET WEB API 2.2 (4 paquetes)
Página de ayuda de Microsoft ASP.NET WEB API 2.2
Microsoft ASP.NET WEB API 2.2 OWIN
ejecutar proyecto, el mismo error que se menciona en la pregunta
Solución:
En web.config
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.3.0" />
</dependentAssembly>
Problema resuelto
pero luego, se encuentra un error de revisión , Para resolverlo, vaya a la carpeta VIEW de su proyecto MVC4, busque el second
archivo web.config y la versión modificada de 2.0.0.0 a 3.0.0.0 como se muestra a continuación.
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
La solución adecuada para resolver este problema es siguiendo los pasos
. Actualice Visual Studio si tiene una versión anterior a 15.5.4 (Opcional)
Eliminar todas las redirecciones de enlace de web.config
Agregue esto al archivo csproj:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>
Construir.
En la carpeta bin, debe haber un
(WebAppName).dll.config
.Debería tener redirecciones en él. Copie estos a la web.config
Elimine de nuevo el recorte anterior del archivo csproj
Deberia de funcionar
Lo que me solucionó el problema fue volver a instalar la página de Ayuda de Microsoft Web API 2.2 .NET y los paquetes de Microsoft Web API .NET 2.2 de OWIN . Reinstalé ambos al mismo tiempo, pero creo que fue el primero quien solucionó el problema.
Intenté las primeras soluciones ofrecidas aquí pero eso no ayudó, luego comparé mis dependencias con las de un proyecto que funcionaba (desde un curso en Pluralsight) y las dos dependencias anteriores eran una versión más baja (5.0.0) ) entonces los actualicé a 5.2.3 y comenzó a funcionar.
Lo solucioné reinstalando el paquete NuGet , que corrige las dependencias rotas. Desde el administrador de paquetes, ejecuta:
Update-Package Microsoft.AspNet.WebApi -reinstall
Necesita agregar redireccionamientos de ensamblaje:
<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 tenga que hacer esto para algunas asambleas más, como alojamiento web, etc.
O puede hacer esto desde NuGet Package Manager Console
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
Y luego podrá agregar la referencia a System.Web.Http.WebHost 5.0
Obtuve este problema al implementar en Azure mediante la función Publicar. Recuerde borrar los archivos en el destino.
Publish Settings -> File Publish Options drop down -> Check Remove additional files at destination
Esto resolvió mi problema, en caso de que la gente tenga que buscar esto como lo hice yo. Todo era la misma versión en mi proyecto / solución, simplemente no en el destino al que estaba implementando.
Para mí, solo estaba fallando con este error en un entorno de producción, no en la máquina local; lo que lo resolvió fue eliminar el contenido de la carpeta / bin y luego volver a generarlo.
Podría resolver un problema similar con System.Net.HTTP agregando referencia de ensamblado en app.config de la aplicación principal.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.0.0.0" />
</dependentAssembly></runtime>
Resolví este problema revirtiendo los cambios que nuget había hecho en mi web.config
después de ejecutar nuget
. Revertir los cambios a una versión de trabajo anterior.
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
</dependentAssembly>
Simplemente configuré Copy Local = true
en el ensamblaje que faltaba y funcionó. Por supuesto, esto ocurre haciendo clic derecho en la referencia que falta (que se indica en el mensaje de error) y seleccionando propiedades; como a continuación:
Esto debería resolver un problema ya que podría haber más de un ensamblado causando el problema: lo que hice fue seleccionar todos los ensamblajes y hacer clic derecho sobre ellos; propiedades seleccionadas; y configúrelos todos en Copiar local = verdadero; y luego republicar.
Solo una sugerencia útil obvia pero posible ... recuerde comprobar que la nueva versión que especifique en su enlace de ensamblado webconfig es la misma versión a la que hace referencia en las referencias de su proyecto. (es decir, mientras escribo esto ... esto sería 5.1.0.0 si ha hecho recientemente un NUGet en System.Web.Http
Tuve el mismo problema y reinstalar el paquete no funciona.
Mi aplicación se ejecuta en LocalIIS (no en IIS EXPRESS). Habilito Assembly Load Trace y descubro que quiero cargar System.Web.Http load from below temp catche. así que elimine todas las carpetas de captura en él.
C: / Windows / Microsoft.NET / Framework / v4.0.30319 / Archivos temporales de ASP.NET [mi aplicación]
Tuve esto de un servicio de WCF. Para mí (como el problema se mostraba en el desarrollo local), simplemente tuve que eliminar el contenido de la carpeta bin debajo de la solución. La reconstrucción funciona bien una vez más.
Tuve un problema similar. Todo estaba funcionando antes. Originalmente se creó usando formularios web y más tarde API web añadida para algunas cosas.
- Intenté desinstalar, instalar y reinstalar el paquete Microsoft.AspNet.WebApi.
- Intenté eliminar la carpeta de paquetes de la solución y dejar restaurar NuGet en VS.
- Intentó eliminar referencias de ensamblaje individuales (en Referencias) y reinstalar paquetes.
- Intentó agregar redireccionamientos de enlace a la versión 5.2.3.0 en web.config mencionado en varias respuestas. Nada funcionó para mí.
Lo que funcionó fue, en Visual Studio, cambiar la configuración del perfil de publicación de Liberar a depurar. Extraño, pero eso fue lo que funcionó. Así que compartir aquí.
Versión ASP.NET: 4.0.30319.18408 pertenece a .Net4.5 y System.Web.Http Version = 4.0.0.0 es compatible para .NET4.0. Entonces, las versiones que tienes no son compatibles. Debe actualizar System.Web.Http a la versión 5.0.0.0, que es compatible con .Net4.5
Yo no hice nada, simplemente copié las DLL de la carpeta Bin de desarrollo a la carpeta Bin desplegada en línea y funcionó bien para mí.
Para resolver el error No se pudo cargar el archivo o ensamblar el error ''System.Web.Http'', use NuGet para instalar la Web API 2.1 WebHost.
En el explorador de soluciones en las referencias, haga clic derecho y seleccione administrar paquetes nuget. (si no está allí instale nuget)
En la ventana Administrar paquetes de NuGet en el lado izquierdo, haga clic en línea y luego en la parte superior derecha busque Web Host e instale Microsoft Web Host ASP.NET Web 2.1. (Una vez instalado, el botón de instalación cambiará a una marca verde)
Después de eso, el proyecto se volverá a cargar y cuando se vuelva a compilar, se resolverá el error y el proyecto depurará y ejecutará. El error desaparecerá y puede ser que ''El recurso no se puede encontrar. Simplemente agregue la URL (por ejemplo, de localhost: 52088 / a localhost: 52088api / products)
Tu pregunta fue buena y me ayudó.
Espero que esta respuesta ayude!
Installing NuGet package ASP.NET.MVC solved the issue for me.
To install package.
- Right click on project
- Select "Manage NuGet Packages"
- Select Online->Nuget.org from left menu
- select "Microsoft ASP.NET MVC"
- Click Install
If you have already installed package earlier, please update the package by selecting Updates from left menu and then selecting "Microsoft ASP.NET" and click Update.
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>