В одном решении VS есть два проекта: клиент (приложение wpf) и библиотека wcf-службы.
Я использую безопасность сообщений и пользовательский AspNetMembershipPrivider на стороне сервера для проверки имени пользователя и передачи.
Поскольку я не использую безопасность Windows, мне пришлось использовать сертификат на сервере, чтобы установить безопасный канал, и что я сделал:
- открыл мой локальный менеджер IIS и добавил самозаверяющий сертификат с именем likemy dev machine.
- проверил, появился ли этот сертификат в оснастке «Сертификаты» в разделе «Персональные сертификаты»
- настроил wcf .config для указания на этот сертификат.
- запустил мое клиентское приложение в VS (и VS также запустило приложение wcfhost для моей wcf lib)
Все было хорошо, wcfhost работал нормально, и мои службы работали нормально, пока я не перезагрузился. После перезагрузки wcfhost заявил жалобу:
The certificate 'CN=xxx' must have a private key that is capable
of key exchange. The process must have access rights for the private
key. --->
System.Security.Cryptography.CryptographicException: Keyset does not exist
Единственное, что помогает, - это воссоздание моего сертификата и снова до перезагрузки.
Как я уже говорил выше, моя служба работает под моей учетной записью (локальным администратором), поэтому я не думаю, что проблема с разрешениями для моих файлов c: \ Users \ xxx \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ files. < бр />
Причина, по которой я использую iis manager для создания сертифицированных, а не makesert и т. Д., Заключается в том, что я хочу быть уверенным, что все будет работать на моей общей учетной записи osting (у меня есть возможность на панели хостинга создавать самозаверяющие сертификаты). бр />
Кто-нибудь может помочь с этим? Спасибо