Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何授予IUSR读取在另一台机器上使用aspnet_regis加密的web.config的权限?_Asp.net_Iis_Encryption_Iis 7_Aspnet Regiis.exe - Fatal编程技术网

Asp.net 如何授予IUSR读取在另一台机器上使用aspnet_regis加密的web.config的权限?

Asp.net 如何授予IUSR读取在另一台机器上使用aspnet_regis加密的web.config的权限?,asp.net,iis,encryption,iis-7,aspnet-regiis.exe,Asp.net,Iis,Encryption,Iis 7,Aspnet Regiis.exe,我们正在使用aspnet_regiis加密我们的web.config(和其他app.config文件)。如果我在我们的Web服务器上加密它,它就会工作,但是我需要能够在另一台服务器上加密文件并部署它 我知道如何做到这一点,它可以与其他服务器上的其他配置文件一起工作,而这些服务器不在IIS下。我还通过在web服务器上加密文件来测试它,以确保问题不是一般的加密过程。问题似乎是IUSR用户没有访问密钥容器的权限。当我尝试该命令时: aspnet_regiis -pa "MyKeyContainer"

我们正在使用aspnet_regiis加密我们的web.config(和其他app.config文件)。如果我在我们的Web服务器上加密它,它就会工作,但是我需要能够在另一台服务器上加密文件并部署它

我知道如何做到这一点,它可以与其他服务器上的其他配置文件一起工作,而这些服务器不在IIS下。我还通过在web服务器上加密文件来测试它,以确保问题不是一般的加密过程。问题似乎是IUSR用户没有访问密钥容器的权限。当我尝试该命令时:

aspnet_regiis -pa "MyKeyContainer" IUSR
失败时会出现警告:“指定的用户名无效。”


我们正在使用iis7。我们应该在另一个用户而不是IUSR下运行IIS以使其正常工作吗?我还做错了什么吗?

经过一些实验后,我发现我必须授予一个名为“IIS APPPOOL\ABC”的用户权限(其中ABC是我应用程序的3个字母的名称),以便它可以读取IIS的密钥容器来读取我的加密文件。我还不知道这个名字是从哪里来的,但由于“ABC”是我的应用程序池的名字,可能就是这个

为了找出这个用户,我将以下方法的输出放入我的应用程序中的一个页面,然后用web浏览器点击它,这样它就会告诉我用户的东西实际上是在什么情况下运行的:

System.Security.Principal.WindowsIdentity.GetCurrent().Name
当我刷新浏览器时,它向我输出“IIS APPPOOL\ABC”用户。然后,我从命令行运行以下命令:

aspnet_regiis -pa "ABCConfigKeys" "IIS APPPOOL\ABC"
该命令授予用户读取加密配置文件的权限,而该用户正是我的应用程序运行的用户

我的IIS7应用程序池的标识设置为“ApplicationPoolIdentity”。当我打印出来时,我完全希望看到IUSR用户,但是我得到了“IIS APPPOOL\ABC”的东西

希望这能帮助其他人