with tutorial started net how create crear como asp c# asp.net .net asp.net-web-api .net-assembly

started - web api c# tutorial



No se puede cargar el ensamblado System.Web.Cors después de llamar a Microsoft.Owin.Cors (2)

Cuando System.Web.Cors referencia del ensamblado System.Web.Cors en el Explorador de soluciones, la Version es 5.2.3.0 . La propiedad Specific Version se establece en False . La ruta es a la carpeta bin del proyecto local. Al verificar las propiedades de .dll desde el Explorador de archivos, la versión del producto y la versión del archivo. También es 5.2.3 .

Mi Web.config :

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

Mis paquetes.config (creo que el ensamblaje problemático es Microsoft.AspNet.WebApi.Cors , pero incluí otro aquí con un nombre similar):

<package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net452" /> <package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net452" />

El error se lanza en esta línea en Startup.cs

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

Aquí está el error completo:

System.IO.FileLoadException was unhandled by user code FileName=System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 FusionLog==== Pre-bind state information === LOG: DisplayName = System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///P:/project-z4a/project-z4a/ LOG: Initial PrivatePath = P:/project-z4a/project-z4a/bin Calling assembly : Microsoft.Owin.Cors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. === LOG: This bind starts in default load context. LOG: Using application configuration file: P:/project-z4a/project-z4a/web.config LOG: Using host configuration file: D:/Documents/IISExpress/config/aspnet.config LOG: Using machine configuration file from C:/Windows/Microsoft.NET/Framework/v4.0.30319/config/machine.config. LOG: Post-policy reference: System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors.DLL. LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors/System.Web.Cors.DLL. LOG: Attempting download of new URL file:///P:/project-z4a/project-z4a/bin/System.Web.Cors.DLL. WRN: Comparing the assembly name resulted in the mismatch: Minor Version ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. HResult=-2146234304 Message=Could not load file or assembly ''System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'' or one of its dependencies. The located assembly''s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Source=Microsoft.Owin.Cors StackTrace: at Microsoft.Owin.Cors.CorsOptions.get_AllowAll() at z4a_dsa.Startup.Configuration(IAppBuilder app) in P:/project-z4a/project-z4a/Startup.cs:line 23 InnerException:

Entonces, puedo ver que está esperando v5.0.0.0, pero no puedo ver dónde o por qué pedir esta versión.

He hecho los siguientes pasos para depurar este error. Después de cada uno de los intentos enumerados, limpié y luego reconstruí el proyecto. El error no ha cambiado después de intentar cada uno de estos pasos.

  • Update-Package
  • Install-Package Microsoft.AspNet.WebApi.Cors
  • Uninstall-Package Microsoft.AspNet.WebApi.Cors , luego Install-Package Microsoft.AspNet.WebApi.Cors
  • Uninstall-Package Microsoft.AspNet.WebApi.Cors , luego Install-Package Microsoft.AspNet.WebApi.Cors -Version 5.2.3
  • v5.0.0.0 Microsoft.AspNet.WebApi.Cors a v5.0.0.0 través de la ventana del Administrador de paquetes.

Todavía no soy un experto en .NET, y esta es la cuarta vez que ocurre el mismo error exacto con un ensamblaje diferente cada vez, ya que comencé un nuevo proyecto vacío con Web Api comprobado. E instalé el z4a-foundation-scaffold-auth en mi proyecto. ¡Definitivamente apreciaría alguna explicación de mis lagunas en el conocimiento aquí!

EDITAR : usé ILDASM.exe para ver Microsoft.Owin.Cors ensamblado de Microsoft.Owin.Cors . Lo encontró especificado System.Web.Cors v5.0.0.0 en su definición de manifiesto. Supongo que mi pregunta ahora es ¿cómo remediar esto?


Resulta que System.Web.Cors.dll no proviene del paquete Microsoft.AspNet.WebApi.Cors . Viene del paquete Microsoft.AspNet.Cors .

Install-Package Microsoft.AspNet.Cors -Version 5.0.0

Esto resolvió el error inmediato.

En caso de que tenga un escenario en el que necesite dos versiones diferentes de System.Web.Cors.dll , sugeriría esta solución:

  1. Usando el Administrador de paquetes, cambie la versión de Microsoft.AspNet.Cors a la versión que Microsoft.Owin.Cors solicita en su definición de manifiesto.
  2. Usando el símbolo del sistema del desarrollador para Visual Studio (ejecutado como administrador), navegue a la carpeta del paquete para el Microsoft.AspNet.Cors recientemente versionado donde reside el * System.Web.Cors.dll **.
  3. Ejecute el siguiente comando: gacutil -i System.Web.Cors.dll .
  4. Vuelva al Administrador de paquetes y cambie Microsoft.AspNet.Cors a la versión que originalmente deseaba.

Este método simplemente lleva la versión deseada del archivo .dll a la carpeta de paquetes de su Solución. Luego, usa gacutil.exe para agregar esta versión de .dll a su caché de ensamblados global. Visual Studio busca las versiones .dll deseadas primero en el GAC, luego en su proyecto local.


ejecuta este comando en PM (gestor de paquetes)

Paquete de instalación Microsoft.AspNet.Cors -Version 5.2.3.0