同じ例外が発生した後: System.Security.Cryptography.CryptographicException, Object has only public half of a key pair, 私は代替案を証明しましたが、最適ではないソリューションです。
状況: 証明書/キー ルックアップは Visual Studio IIS Express 内でうまく機能しましたが、Web アプリケーションが適切な IIS サービスで実行されている間、常に「キー ペアの公開半分のみを含む」という例外を受け取りました。
私は WSE3 CertificateTool を使用してファイルシステムの秘密鍵セクションを見つけ、ユーザー権限設定を調整して、上記の回答に従って ASP ユーザー権限を付与しようとしました。
私の最終的な修正は、Web サービス コードに固有の新しい IIS アプリケーション プールを作成し、プールが実行するユーザー ID を証明書 + 秘密キーのローカル マシン所有者として設定することでした。
証明書をインストールした最終的な場所は、「Local Computer / Trusted People」でした。
WSE3 CustomPolicyAssertion、C# .NET を使用:
clientToken = X509TokenProvider.CreateToken(StoreLocation.LocalMachine,
StoreName.TrustedPeople, "soap.partnersite.com", X509FindType.FindBySubjectName);
アプリケーション プール ID を更新した後、アプリケーション プールの所有者を変更するときに秘密鍵ファイルの上書きは必要ありませんでした。