RemotingException se produce cuando .NET Remoting recibe un mensaje personalizado con formato binario

En este artículo se resuelve RemotingException que recibe la aplicación de envío cuando Microsoft .NET Remoting recibe un mensaje personalizado con formato binario.

Versión del producto original:   Microsoft .NET Framework 4.5
Número KB original:   2935795

Síntomas

Imagine la siguiente situación:

  • Se usa Microsoft .NET Remoting para establecer la comunicación entre aplicaciones.
  • Se usa formato binario para serializar los mensajes.
  • Una aplicación envía un tipo de mensaje personalizado derivado del MarshalByRefObject objeto.

En este escenario, la aplicación de envío recibe una RemotingException excepción. Esta excepción contiene una NotSupportedException excepción interna y el vínculo https://go.microsoft.com/fwlink/?linkid=390633 .

Causa

Este problema se produce porque .NET Remoting rechaza los mensajes personalizados derivados del MarshalByRefObject formato binario. Este es el comportamiento predeterminado para las siguientes versiones de Microsoft .NET Framework:

  • .NET Framework 1.1
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5
  • .NET Framework 4.0
  • .NET Framework 4.5

Solución alternativa

Para configurar .NET Remoting para aceptar mensajes MarshalByRefObject personalizados, siga estos pasos:

  1. Cuando llame a ChannelServices.RegisterChannel() la función, establezca el ensureSecurity argumento en true . Esto garantiza que el canal de comunicación remota sea seguro.
  2. Establezca el valor de clave en el archivoWeb.configo en el archivoApp.configde la aplicación que recibe este mensaje personalizado, como en microsoft:Remoting:AllowTransparentProxyMessage true el ejemplo siguiente:
<configuration>
    <appSettings>
        <add key="microsoft:Remoting:AllowTransparentProxyMessage" value="true"/>
    </appSettings>
</configuration>

Nota

Si esta configuración no está presente o si contiene un valor distinto de <appSettings> , .NET Remoting usará el comportamiento predeterminado y lanzará un cuando se reciba este true tipo de RemotingException mensaje.

Referencias