我们正在使用aspnet_regiis来加密我们的web.config(和其他app.config文件)。如果我在我们的网络服务器上加密它,它就可以工作,但我需要能够在另一台服务器上加密文件并进行部署。
我知道如何执行此操作,并且它可以与不在IIS下的其他服务器上的其他配置文件一起使用。我还通过加密Web服务器上的文件来测试它,以确保问题不是加密过程。问题似乎是IUSR用户没有访问密钥容器的权限。当我尝试命令时:
aspnet_regiis -pa "MyKeyContainer" IUSR
它失败并显示警告“指定的用户名无效。”
我们正在使用IIS 7.我们应该在不同的用户而不是IUSR下运行IIS来使其工作吗?我做错了吗?
答案 0 :(得分:0)
经过一些实验,我发现我必须向名为“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”的东西。
希望这有助于其他人。