2012-09-02 58 views
6

Quizás Información relevante: Tengo una aplicación web que creé con .net 4.5. Quería implementar en los sitios web de Azure, pero solo es compatible con .net 4.0, por lo que he degradado el proyecto a .NET 4.0. Todavía funciona cuando se ejecuta localmente.No se pudo cargar el archivo o ensamblado 'System.Net.Http' o una de sus dependencias

Cuando publico a Azure, me sale este error:

Could not load file or assembly 'System.Net.Http' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

He intentado quitar la API de Web con Nuget y readding, como otra pregunta sobre sugirieron SO pero todavía tengo el mismo problema.
He intentado cerrar/abrir VS, y limpiar/compilar.

+0

Se queja de una falta de coincidencia [AssemblyVersion]. System.Net.Http solo es compatible con .NET 4.5, por lo que debería ser parte del problema. –

+0

@HansPassant Parece que se agrega automáticamente si agrego Web API a mi proyecto, lo cual es supuesto por .net 4.0, ¿verdad? Y parece funcionar bien localmente ... No estoy seguro de cómo ejecutar esto en Azure. – Kyle

+0

¿Qué tal hacer clic derecho en la (s) referencia (s) agregada (s) por nuget, elegir las propiedades y configurar "copiar local" cierto? – spender

Respuesta

0

System.NET.HTTP.dll solo depende de System.dll, System.Core.dll y mscorlib.dll.

Asegúrese de tener este archivo DLL (System.NET.HTTP.dll) en su paquete de implementación (puede hacer la conexión RDP y verificar la carpeta de implementación). Juega con la propiedad de referencia "Copiar a Local" o incluye este dll en tu proyecto en el nivel raíz y configura el tipo de "contenido" en las propiedades.

También System.Net.Http.dll también es compatible con .NET 2.0 como lo veo, eso podría causar un problema. Así, además, por encima de tratar de propiedad conjunto de referencia "versión específica" = true

3

I resuelto un problema similar (System.Web.Http y System.Net.Http.Formatting) error mediante la eliminación de la referencia a la referencia problema (que fue señalado a mi carpeta de instalación de .Net) y reemplazándolo con el archivo de referencia en mi carpeta de paquetes que fue instalada por el paquete Microsoft.AspNet.WebApi NuGet.

+0

Encontré la dependencia faltante ('System.Net.Http.Formatting') en' .. \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll' . –

0

Azure Now es compatible con .Net 4.5 en la pestaña de configuración. Puede seleccionar .NET Framework versión V3.5 o V4.5 Tengo varias aplicaciones web MVC con numerosas DLL compatibles todas compiladas en V4.5. Lo que Azure no admite es V 4.5.1 (de la versión VS 2013 RC).

2

Tuve el mismo problema. Sin embargo, la actualización de las versiones de ensamblaje, la copia local y la configuración de la versión específica por sí sola no resolvió mi problema. En la configuración de mi aplicación, implemento un rol web y un rol de trabajador en un servicio en la nube. Después de crear el servicio, en la pestaña de configuración configuro el sistema operativo para Windows Server 2012 R2 para obtener soporte para .Net Framework 4.5.1. Pero el error todavía ocurrió.

En investigaciones posteriores, descubrí que el archivo * .cscfg para mi servicio en la nube anulaba la configuración del portal con una configuración osFamily oscura de "3". Cuando comencé mi proyecto estaba en MVC3 y todavía no tenía WebAPI y framework 4.5.1. osFamily 3 fue el último en ese momento.

En mi última implementación, actualicé mi sitio a 4.5.1 framework y MVC5. Verifiqué que funcionaba localmente en mi máquina de desarrollo. Pero no funcionó después de la implementación y no se encontró el error al hacer referencia a System.Net.Http.Formatting versión 4.0.0.0. Más tarde vi el registro de despliegue que mostraba el error de origen

"La función llamada NetFx451 que es requerida por el paquete cargado no está disponible en el SO * elegido para la implementación."

Aquí está el artículo del blog que me llevó a la solución para cambiar la configuración de osFamily a 4. Luego mi sitio funcionó después de una nueva implementación.

http://tech.trailmax.info/2014/02/azure-deployment-the-feature-named-netfx451-that-is-required-by-the-uploaded-package-is-not-available-in-the-os-chosen-for-the-deployment/

Cuestiones relacionadas