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
MarshalByRefObjectist.
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:
- Wenn Sie
ChannelServices.RegisterChannel()die Funktion aufrufen, legen Sie das ArgumentensureSecurityauftrue. Dadurch wird sichergestellt, dass Ihr Remotingkanal sicher ist. - Legen Sie den Wert des
microsoft:Remoting:AllowTransparentProxyMessagetrueSchlü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.