![如何更改 IIS Express 虚拟目录密码加密提供程序?](https://linux22.com/image/624806/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20IIS%20Express%20%E8%99%9A%E6%8B%9F%E7%9B%AE%E5%BD%95%E5%AF%86%E7%A0%81%E5%8A%A0%E5%AF%86%E6%8F%90%E4%BE%9B%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
在 Visual Studio 2012 中,我正在开发一个 ASP.NET MVC 应用程序,该应用程序需要在主应用程序目录下有一个名为“Shared”的虚拟目录。这恰好指向一个 UNC 路径,所以我还需要指定用于访问该路径的用户名和密码。
我使用以下命令执行此操作:
C:\Program Files\IIS Express> AppCmd.exe SET VDir /username:"DOMAIN\user" /password:"Password"
但是当我运行该应用程序时,尝试访问共享虚拟目录时出现以下配置错误:
Failed to decrypt attribute 'password' because the keyset does not exist
然后,错误屏幕会突出显示我的文件<virtualDirectory>
中的相应元素:applicationHost.config
<virtualDirectory path="/Shared" physicalPath="\\MyNAS\MyUNCPath\Shared" userName="DOMAIN\user" password="[enc:RsaProtectedConfigurationProvider:ALONGENCRYPTIONSTRINGISHERE==:enc]" />
现在,我已经疯狂地在 Google 上搜索了几个小时,并且看到几条评论表明,在这种情况下,我的密码的默认(正确?)加密类型应该是“AesProvider”而不是“RsaProtectedConfigurationProvider”。但似乎没有任何方法可以在设置密码时明确声明要使用的加密提供程序。
如果有帮助的话,我的提供商列表applicationHost.config
如下所示:
<configProtectedData>
<providers>
<add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
<add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="ALONGENCRYPTIONKEYSTRINGISHERE" />
<add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="ANOTHERENCRYPTIONKEYSTRINGISHERE" />
</providers>
</configProtectedData>
我的直觉告诉我这里存在一些配置错误,但我不知道如何识别和修复问题。有什么想法吗?