c# - mvc - signalr net core
Error de SignalR 2.0: no se pudo cargar el archivo o el ensamblaje Microsoft.Owin.Security (9)
Cambiar el nombre de app.config a web.config funciona para mí. O simplemente haga una copia de app.config y llámelo web.config
Estoy siguiendo este tutorial paso a paso
Y estoy recibiendo una excepción en la línea marcada a continuación
string url = "http://localhost:8080";
using (WebApp.Start(url)) //<------ error on this line
{
Console.WriteLine("Server running on {0}", url);
Console.ReadLine();
}
Mensaje de error:
No se pudo cargar el archivo o el ensamblaje ''Microsoft.Owin.Security, Version = 2.0.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)
Más información:
En mi solución de proyecto, la referencia está apuntando a la dll en la carpeta de paquetes de NuGet
Esto ha sido agregado en mi archivo App.config por NuGet
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
En la carpeta de paquetes, packages/Microsoft.Owin.Security.2.0.0/lib/net45
, la versión del archivo de Microsoft.Owin.Security.dll es 2.020911.395
En mi caso, resultó ser un problema de IIS Express. Una vez que cambié la depuración a IIS local, el error desapareció.
En mi caso, tengo este error de código primero durante la "base de datos de actualización". Puse "Establecer como iniciar un proyecto" en un proyecto con migration.it me ayudó
En mi caso, tuve dos proyectos:
-
MyProj.MvcWeb
(una aplicación MVC que hizo referencia aMicrosoft.Owin.Security 3.0.0
) -
MyProj.Data.Entities
(una biblioteca de clases que hizo referencia aMicrosoft.Owin.Security 2.1.0
; no estoy seguro de cómo sucedió esto)
La actualización de Microsoft.Owin.Security
de 2.1.0
a 3.0.0
en el proyecto MyProj.Data.Entities
solucionó el problema para mí.
Este ensamblaje no coincide con lo que se solicitó, es por eso que recibe este error. verifique la versión de Microsoft.Owin.Security en el GAC. También vea here
Lo arreglé cambiando mi etiqueta de configuración Web.config:
de esto:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
a esto:
<configuration>
No sé por qué esto funciona.
Ok ya lo he resuelto.
Tuve que actualizar mi paquete Microsoft.Owin.Security a 2.1.0 con este comando
Install-Package Microsoft.Owin.Security -Version 2.1.0
Y modifique los enlaces en mi App.config como este
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
Simple, ve a tu archivo web.config. Cambie la etiqueta "bindingRedirect" para Microsoft.Owin, Microsoft.Owin.Security.OAuth, Microsoft.Owin.Security.Cookies, Microsoft.Owin.Security a lo siguiente:
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.1.0" />
Esto podría funcionar.
Tomé tu idea, gracias por la investigación que hiciste, y lo hice así:
get-project PerfSurf | Update-Package Microsoft.Owin.Security
Es mucho más simple, y esto se actualizará manifestado.
Ignorar esta parte ( get-project PerfSurf
), ya que la uso porque tengo varios proyectos de prueba y no quiero actualizarlos todos.