В 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]" />
Я безумно гуглил пару часов и видел несколько комментариев, указывающих на то, что тип шифрования по умолчанию (правильный?) Для моего пароля в этом сценарии должен быть «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>
Мое чутье говорит, что здесь некоторая неправильная конфигурация, но я не знаю, как определить и исправить проблему. Любые идеи?