尝试使用以下代码从远程计算机获取证书哈希时收到错误消息:
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 .
请告诉我我做错了什么/缺少什么/为什么会发生错误。