2009-06-04 6 views
0

Ich entwickle eine Remoting-Anwendung, in der ein Client nach bestimmten Informationen sucht, um sich bei einem Webserver anzumelden. Er legt den Benutzernamen und die Kennwörter in einer Klasse fest, in der die Eigenschaften als System.Security.SecureString gespeichert werden. Ich versuche dann, die Klasse mit den Login-Daten an ein Server-Objekt zu übergeben, das es benutzt, um sich mit dem Web-Host zu verbinden, und einige Informationen zurück zu bekommen. Wenn ich die Server-Methode anrufe, habe ich folgenden Fehler: Verwenden von System.Security.SecureString in .NET Remoting App?

Type 'System.Security.SecureString' in Assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
Die Klasse, die die SecureStrings enthält, ist als serialisiert gekennzeichnet, und dies funktionierte während der Entwicklung, bis ich die SecureString-Eigenschaften hinzugefügt habe. Gibt es etwas, was ich tun muss, damit dies funktioniert, oder muss ich SecureString in String ändern?

Antwort

1

Es ist sehr schwierig, Daten von einem SecureString zu bekommen, was eine gute Sache ist. Wenn Sie SecureString verwenden möchten, müssen Sie ein benutzerdefiniertes Serializer auf Ihrem Objekt implementieren, das die SecureString übernehmen und als etwas Brauchbares speichern kann (vielleicht sogar während des Prozesses).

+0

Ich mag es nicht, aber änderte alle SecureString in String und ich muss nur mit der Verschlüsselung durch den Kanal zufrieden sein – jac

0

Sichere String-Klasse ist für COM nicht sichtbar. Deshalb wird dieser Fehler angezeigt. Möglicherweise wird die sichere Zeichenfolge in eine Zeichenfolge konvertiert und dann wird es serialisiert.