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
MarshalByRefObjectobjeto.
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:
- Cuando llame a
ChannelServices.RegisterChannel()la función, establezca elensureSecurityargumento entrue. Esto garantiza que el canal de comunicación remota sea seguro. - 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:AllowTransparentProxyMessagetrueel 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.