C# 通过代码“将SSL绑定添加到IIS站点时遇到异常”;指定的登录会话不存在。它可能已经被终止。”;

C# 通过代码“将SSL绑定添加到IIS站点时遇到异常”;指定的登录会话不存在。它可能已经被终止。”;,c#,asp.net,ssl,iis,ssl-certificate,C#,Asp.net,Ssl,Iis,Ssl Certificate,我有一个场景,需要在代码条件下启动具有SSL绑定的IIS站点。下面是代码片段 ServerManager serverManager = new ServerManager(); var webService = serverManager.Sites["webService"]; if (webService != null) { serverManager.Sites.Remove(webService); } serverManager.Sites.Add("webService

我有一个场景,需要在代码条件下启动具有SSL绑定的IIS站点。下面是代码片段

ServerManager serverManager = new ServerManager();
var webService = serverManager.Sites["webService"];
if (webService != null)
{
    serverManager.Sites.Remove(webService);
}

serverManager.Sites.Add("webService", "http", "*:8000:", phyPath);
serverManager.Sites["webService"].Bindings.Add("*:8001:", certificate.GetCertHash(), "My");
serverManager.CommitChanges();
如果我在http上运行它,所有这些都会执行得很好。但当添加带有证书的SSL绑定时,它会引发此异常

"A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520)"
读到这个错误,我在某处读到它不应该出现在个人存储和IIS服务器证书中,所以我在运行代码之前确保它不存在。它也不起作用


对于测试,我使用的是自签名证书,我认为这不应该是一个问题。搜索此错误时也没有发现任何此类内容。此证书是一个.cer证书。

如果您只执行这一行
certificate.GetCertHash()
它有效吗?@zaitsman-我没有收到您的问题?另一次是针对不同的服务,当我通过使用传递证书哈希的powershell运行此服务时。忘了提及这是.cer证书-这是公共证书。发生此错误的原因可能是基础COM api无法访问密钥(可能)以返回哈希。此外,如果证书没有用私钥安装在计算机个人存储中,绑定将不起作用。即使存储中有证书,我也会遇到同样的错误。另一件事是它在Windows上以用户身份以NT权限作为服务执行。其中,w3wp在IIS应用程序池下运行。这可能是访问密钥的问题吗?
NT AUTHORITY
不是一个用户,而是一个组名,其中包括
LocalSystem
NetworkService
等用户。如果您使用的是
NetworkService
用户,且未加载用户配置文件,则可能会出现该异常。