密钥集不存在 - 权限应该没问题

时间:2017-08-22 06:22:02

标签: wcf iis permissions certificate

我在Windows Server 2016上向IIS部署WCF服务时遇到问题。 该服务需要一个私钥,该位置配置如下:

    <!DOCTYPE html>
<html>
<head>
    <title>Comment</title>
</head>
<body>

<!--<textarea id="ta" rows="30" cols="30" readonly></textarea>-->
<div id="ta"></div>
<br>
<input type="textbox" id="tb"></input><br>
<button onclick="add()">Submit</button><br>


<script type="text/javascript">


var i=0,ta="";
    function add() {
        (function(){
            i++;
        var temp_i = i;
        ta=document.getElementById('ta');
        var newDiv = document.createElement("div");
        newDiv.id = "d"+temp_i;
        newDiv.style.display="block";

        newTa = document.createElement("input");
        newTa.type="text"
        newTa.id = "t"+temp_i;
        //newTa.readonly='true';
        newTa.setAttribute("readOnly","true");
        newTa.style.display="block";

        newTa.onclick=function(){
        console.log(temp_i);
        console.log(i);
        newP.style.visibility="visible";
        newImg.style.visibility="visible";
        newBut1.style.visibility="visible";
        newButt1.style.visibility="visible";

        };

       // document.querySelector('body').addEventListener('click', function(event) {


        var newP=document.createElement("BUTTON");
        newP.id="p"+temp_i;
        newP.innerHTML="Edit";
        newP.style.visibility="hidden";
        newP.style.display="inline";
        newP.onclick=function()
        {



            newTa.removeAttribute('readonly'); // only needed the first time
            newTa.readOnly = false;

            //newTa.setAttribute("readOnly","false");
            //newTa.readonly='false';
            //newP.innerHTML="wrng";
        }

        var newImg=document.createElement("IMG");
        newImg.id="i"+temp_i;
        newImg.src="http://www.freeiconspng.com/uploads/close-icon-30.png";
        newImg.style.width="20%";
        newImg.style.height="20%";
        newImg.alt="close";
        newImg.style.visibility="hidden";
        newImg.style.display="inline";
        newImg.onclick=function()
        {
             newDiv.innerHTML="";
             //newDiv.remove();
        }

        var newBut1=document.createElement("button");
        newBut1.id="b"+temp_i;
        newBut1.innerHTML="Post";
        newBut1.style.visibility="hidden";
        newBut1.style.display="inline";
        newBut1.onclick=function(){
            //newTa.readonly='true';
            newTa.setAttribute("readOnly","true");
        }


        var newButt1=document.createElement("button");
        newButt1.id="bt"+temp_i;
        newButt1.innerHTML="Cancel";
        newButt1.style.visibility="hidden";

        newButt1.onclick=function(){
            newTa.value=document.getElementById('tb').value;
            newTa.readonly='true';
        }


        newDiv.appendChild(newTa);
        newDiv.appendChild(newP);
        newDiv.appendChild(newImg);
        newDiv.appendChild(newBut1);
        newDiv.appendChild(newButt1);


        var b=""
        b="t"+temp_i;
        ta.appendChild(newDiv);
        document.getElementById(b).value=document.getElementById('tb').value;

        })();

    }


    </script>

</body>
</html>

我得到了着名的错误&#34; Keyset不存在&#34;,所以我用Google搜索并加倍检查权限等。 证书已正确放置在LocalMachine / Personal / Certificates中。允许主键导出。

我授予了APPPOOL标识和IIS_IUSRS的主键权限。 我甚至试图完全访问&#34; Everyone&#34;。 我还尝试在我的管理员帐户下运行应用程序池。

没有运气。

我尝试创建一个小型C#控制台应用程序,该应用程序读取证书,主键并导出主键。 这很有效。

所以我现在没有选择了。 有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

该应用程序作为父站点的应用程序运行,但具有自己的专用应用程序池。向父网站的应用程序池授予私钥权限,可以解决问题。这对我没有任何意义,但至少它现在有效......