Signalr: Obteniendo un error al usar Newtonsoft.Json Versión 10.0 con Microsoft.AspNet.SignalR.Client Versión 2.2.1.0.

Creado en 17 may. 2017  ·  7Comentarios  ·  Fuente: SignalR/SignalR

Obteniendo un error al usar Newtonsoft.Json Versión 10.0 con Microsoft.AspNet.SignalR.Client Versión 2.2.1.0. Recibo el siguiente error al crear una nueva HubConnection en SignalR.

Incluso he dado la referencia de Newtonsoft.Json Versión 10.0.0 de Installing Package from Nuget Package Manager.

Mensaje de excepción: no se pudo cargar el archivo o ensamblado 'Newtonsoft.Json, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

StackTrace:
en Microsoft.AspNet.SignalR.Client.Connection..ctor (String url, String queryString)
en Microsoft.AspNet.SignalR.Client.HubConnection..ctor (URL de cadena, useDefaultUrl booleano)
en Microsoft.AspNet.SignalR.Client.HubConnection..ctor (URL de cadena)
en MyNamespace.MyClass.ConnectToWebModuleHub ()

Registro de fusión:
=== Información de estado previa al enlace ===
REGISTRO: DisplayName = Newtonsoft.Json, Versión = 6.0.0.0, Cultura = neutral, PublicKeyToken = 30ad4fe6b2a6aeed
(Completamente especificado)
LOG: Appbase = file: /// C: / Archivos de programa (x86) /
acerca de: en blanco
LOG: PrivatePath inicial = NULL

Ensamblado de llamada: Microsoft.AspNet.SignalR.Client, Version = 2.2.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35.

LOG: este enlace comienza en el contexto de carga LoadFrom.
WRN: la imagen nativa no se probará en el contexto LoadFrom. La imagen nativa solo se probará en el contexto de carga predeterminado, como con Assembly.Load ().
LOG: usando el archivo de configuración de la aplicación:
LOG: utilizando el archivo de configuración del host:
REGISTRO: utilizando el archivo de configuración de la máquina de C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config.
REGISTRO: Referencia posterior a la política: Newtonsoft.Json, Versión = 6.0.0.0, Cultura = neutral, PublicKeyToken = 30ad4fe6b2a6aeed
LOG: El mismo enlace se vio antes y falló con hr = 0x80070002.

Comentario más útil

@moozzyk Gracias por responder.

También instalé SignalR a través de Nuget Package Manager y ahora mismo he actualizado mi Newtonsoft Json a la versión 6.0.5 y ahora funciona correctamente. Entonces, ¿es cierto que Microsoft.AspNet.SignalR.Client Versión 2.2.1.0 solo es compatible con Newtonsoft.Json Versión 6.x ? Como estoy usando Microsoft.AspNet.SignalR.Core Versión 2.2.1.0 con Newtonsoft.Json Versión 10.x , aunque funciona correctamente, no crea ningún problema. Estoy sorprendido porque aunque instalé ambos desde Nuget Package Manager, está buscando Newtonsoft.Json Versión 6.0 .

Todos 7 comentarios

Tal vez debería intentar agregar assemblyBinding a su archivo de configuración.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

¿Funciona para ti?

@ Thiago-Caramelo Gracias por responder.

En realidad, he intentado lo mismo antes de agregar este problema aquí, pero no funcionó para mí.

@hardikpatelse : la redirección de enlace debería funcionar. Si no es así, debe mostrar su proyecto. El cliente SignalR depende de Newtonsoft.Json 6.0.4 . Solo se puede cargar una versión de un ensamblado en un AppDomain y, si instaló la versión 10.xy se carga, SignalR no puede encontrar la versión 6.x con la que se compiló. Los redireccionamientos de vinculación permiten usar una versión diferente de un ensamblado a la que se solicitó. Parece que en tu caso esto no está pasando. Creo que NuGet debería agregar redireccionamientos de enlace apropiados si es necesario al instalar un paquete.

@moozzyk Gracias por responder.

También instalé SignalR a través de Nuget Package Manager y ahora mismo he actualizado mi Newtonsoft Json a la versión 6.0.5 y ahora funciona correctamente. Entonces, ¿es cierto que Microsoft.AspNet.SignalR.Client Versión 2.2.1.0 solo es compatible con Newtonsoft.Json Versión 6.x ? Como estoy usando Microsoft.AspNet.SignalR.Core Versión 2.2.1.0 con Newtonsoft.Json Versión 10.x , aunque funciona correctamente, no crea ningún problema. Estoy sorprendido porque aunque instalé ambos desde Nuget Package Manager, está buscando Newtonsoft.Json Versión 6.0 .

No cambiamos las versiones de dependencia principales en versiones menores, por lo que seguimos dependiendo de Newtonsoft.Json 6.x. Los usuarios pueden (y muchos lo hacen) forzar el uso de una versión más nueva de una dependencia. No he visto ningún informe de que SignalR 2.x no funcione con Newtonsoft.Json 9.xo 10.x.

El problema se resuelve ahora mediante el uso de Assembly Resolve y se proporciona la ruta de NewtonSoft JSON versión 10.0.

Hola @hardikpatelse
Tengo el mismo problema con FcmSharp y Microsoft.AspNet.SignalR.Client.
FcmSharp usa FcmSharp FcmSharp Newtonsoft.Json (> = 12.0.1) y Microsoft.AspNet.SignalR.Client usa solo newtonsoft.json, versión = 6.0.0.0.
Quiero usar FcmSharp en mi SQL CLR, en CREATE ASSEMBLY mostrar este error.

El ensamblado 'SqlLibrary' hace referencia al ensamblado 'newtonsoft.json, versión = 6.0.0.0, culture = neutral, publickeytoken = 30ad4fe6b2a6aeed.', Que no está presente en la base de datos actual. SQL Server intentó ubicar y cargar automáticamente el ensamblado referenciado desde la misma ubicación de donde provenía el ensamblado de referencia, pero esa operación falló (motivo: 2 (el sistema no puede encontrar el archivo especificado)). Cargue el ensamblado al que se hace referencia en la base de datos actual y vuelva a intentar su solicitud.

¿Cómo se resuelve el ensamblaje y se da la ruta de NewtonSoft JSON versión 12.0?

¿Fue útil esta página
0 / 5 - 0 calificaciones