Asp.net 如何授予IUSR读取在另一台机器上使用aspnet_regis加密的web.config的权限?
我们正在使用aspnet_regiis加密我们的web.config(和其他app.config文件)。如果我在我们的Web服务器上加密它,它就会工作,但是我需要能够在另一台服务器上加密文件并部署它 我知道如何做到这一点,它可以与其他服务器上的其他配置文件一起工作,而这些服务器不在IIS下。我还通过在web服务器上加密文件来测试它,以确保问题不是一般的加密过程。问题似乎是IUSR用户没有访问密钥容器的权限。当我尝试该命令时: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 -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”的东西
希望这能帮助其他人