Использование System.Security.SecureString в.NET Remoting App?

Я разрабатываю приложение Remoting, в котором клиент ищет информацию о конкретном хранилище для входа на веб-сервер. Он устанавливает имя пользователя и пароли в классе, который хранит свойства как System.Security.SecureString. Затем я пытаюсь передать класс с учетными данными для входа на серверный объект, который использует его для подключения к веб-хосту, получения и получения некоторой информации обратно. Когда я вызываю метод сервера, у меня появляется эта ошибка:

 Тип 'System.Security.SecureString' в сборке 'mscorlib, версия =2.0.0.0, культура = нейтральная, PublicKeyToken=b77a5c561934e089' не помечена как сериализуемая. 
Класс, содержащий SecureStrings, помечен как сериализуемый, и он работал во время разработки, пока я не добавил свойства SecureString. Есть ли что-то, что мне нужно сделать, чтобы сделать эту работу, или мне придется изменить SecureString на String?

2 ответа

Решение

Очень сложно получить данные из SecureString, Что хорошо. Если вы хотите использовать SecureString вам придется реализовать пользовательский Serializer на вашем объекте, который может взять SecureString и сохранить его как нечто полезное (возможно, даже зашифровав его в процессе).

Класс защищенной строки не виден COM. Именно поэтому он показывает эту ошибку. Может быть, преобразование безопасной строки в строку, а затем ее сериализация поможет.

Другие вопросы по тегам