RemotingException wird ausgelöst, wenn .NET Remoting eine binär formatierte benutzerdefinierte Nachricht empfängt

In diesem Artikel wird remotingException aufgelöst, die die sendende Anwendung empfängt, wenn Microsoft .NET Remoting eine binär formatierte benutzerdefinierte Nachricht empfängt.

Ursprüngliche Produktversion:   Microsoft .NET Framework 4.5
Ursprüngliche KB-Nummer:   2935795

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie verwenden Microsoft .NET Remoting, um die Kommunikation zwischen Anwendungen herzustellen.
  • Sie verwenden das Binärformat, um die Nachrichten zu serialisieren.
  • Eine Anwendung sendet einen benutzerdefinierten Nachrichtentyp, der vom Objekt abgeleitet MarshalByRefObject ist.

In diesem Szenario empfängt die sendende Anwendung eine RemotingException Ausnahme. Diese Ausnahme enthält eine NotSupportedException innere Ausnahme und den https://go.microsoft.com/fwlink/?linkid=390633 Link.

Ursache

This issue occurs because .NET Remoting rejects custom messages that are derived from the MarshalByRefObject when you use binary format. Dies ist das Standardverhalten für die folgenden Versionen von 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

Problemumgehung

Führen Sie die folgenden Schritte aus, um .NET-Remoting so zu konfigurieren, dass benutzerdefinierte Nachrichten akzeptiert MarshalByRefObject werden:

  1. Wenn Sie ChannelServices.RegisterChannel() die Funktion aufrufen, legen Sie das Argument ensureSecurity auf true . Dadurch wird sichergestellt, dass Ihr Remotingkanal sicher ist.
  2. Legen Sie den Wert des microsoft:Remoting:AllowTransparentProxyMessage true Schlüssels in der Web.config- oder App.config-Datei der Anwendung fest, die diese benutzerdefinierte Nachricht empfängt, wie im folgenden Beispiel gezeigt:
<configuration>
    <appSettings>
        <add key="microsoft:Remoting:AllowTransparentProxyMessage" value="true"/>
    </appSettings>
</configuration>

Hinweis

Wenn diese <appSettings> Konfiguration nicht vorhanden ist oder einen anderen Wert enthält als , verwendet true .NET Remoting das Standardverhalten und löst einen RemotingException Zeitpunkt aus, an dem diese Art von Nachricht empfangen wird.

References