質問: Request.ClientCertificate; if(cert.IsPresent) { //ある } else{ //なし } } ``` 参考にしたサイトが見つけられませんでした ### 補足 * IISはDefaultサイトの下に作ったアプリケーションを追加しました。 * SSLの設定は、「自己証明書入りの証明書の作成」からの手順と方法で設定しました。 * オレオレ認証局を立てました(windows server 2012)。 そこで、クライアント証明書を作り、インストールしました。 * クライアント証明書**認証**がしたいわけではない。IISの機能にある認証機能マッピングを使いたいわけではありません。
回答: 「Visual Stdio で デバッグ実行」で取得でき、「開発PCと同じPCにIIS」では取得できないということからの想像ですが、ワーカープロセスのアクセス権の問題だと思います。 「Visual Stdio で デバッグ実行」の際は、多分 Visual Studio を管理者権限で立ち上げ、ASP.NET 開発サーバーまたは IIS Express で Web アプリを動かしているのだと思いますが、その場合ワーカープロセスは管理者権限を持ってリソースにアクセスに行きます。 一方、「開発PCと同じPCにIIS」ではワーカープロセスはデフォルトでは権限の低いアクセス権しか持っていません。 アプリケーション プール ID https://technet.microsoft.com/ja-jp/library/ee886292.aspx ファイルの読み出し・書き込みなどですと、ワーカープロセスにそのファイルのあるディレクトリに対する読み取り・書き込み権限を与えるというのが解決手段です。具体例は、IIS6 の古い記事ですが、以下の通りです。 How To: ASP.NET で Network Service アカウントを使用してリソースにアクセスする方法 https://msdn.microsoft.com/ja-jp/library/ms998320.aspx ただ、証明書のストアに対して同様にアクセス権を与えるにはどうすればよいかは、自分としては全く未知の領域で、分からないです。