次のコードを使用してリモート マシンから証明書ハッシュを取得しようとすると、エラーが発生します。
private string getCertHash(string Hostname)
{
string result = "";
using (ServerManager serverManager = ServerManager.OpenRemote(Hostname))
{
SiteCollection siteCollection = serverManager.Sites;
foreach (Site site in siteCollection)
{
foreach (Binding binding in site.Bindings)
{
if (binding.Protocol == "https")
{
// Error here
foreach (Byte certhashbyte in binding.CertificateHash)
result += certhashbyte.ToString();
}
}
}
}
return result;
}
私が受け取るエラーの詳細:
「binding.certhashbyte」が「System.Runtime.InteropServices.COMException」タイプの例外をスローしました
アプリケーションが WSAStartup を呼び出していないか、WSAStartup が失敗しました。(HRESULT からの例外: 0x8007276D)
次の行を置き換えると:
using (ServerManager serverManager = ServerManager.OpenRemote(Hostname))
と
using (ServerManager serverManager = new ServerManager)
ローカルサーバーを使用するには、正常に動作します。
ServerManager.OpenRemote(Hostname) の使用は一般的に機能することに注意してください (他のすべての情報を取得しますが、CertHash 情報のみがエラーになります。両方のマシン (ローカルとリモート) で管理者権限を持っています。システムは IIS 7.5 を使用する Windows 2008 R2 です) .
私が間違っていること/不足していること/エラーが発生する理由を教えてください。