Я пытаюсь изменить удостоверение для пула приложений в Windows Azure. Мой проект использует этот пул приложений, когда работает в Windows Azure. По умолчанию пул приложений использует идентификатор NetworkService, но я должен использовать другой идентификатор. Я пытаюсь изменить его в OnStart()
событии WebRole следующим образом:
using (ServerManager serverManager = new ServerManager())
{
string appPoolName =
serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_Web"]
.Applications.First().ApplicationPoolName;
var appPool = serverManager.ApplicationPools[appPoolName];
appPool.ProcessModel.UserName = Environment.MachineName + "\\UserName";
appPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
appPool.ProcessModel.Password = "UserPassword";
serverManager.CommitChanges();
}
Но я получаю исключение со следующим сообщением:
System.Runtime.InteropServices.COMException (0x80090016):
Keyset does not exist (Exception from HRESULT: 0x80090016)
at Microsoft.Web.Administration.Interop.AppHostWritableAdminManager.CommitChanges()
at Microsoft.Web.Administration.Configuration.CommitChanges()
at Microsoft.Web.Administration.ConfigurationManager.CommitChanges()
at Microsoft.Web.Administration.ServerManager.CommitChanges()
at Project.Web.WebRole.OnStart() in E:\Projects\...\Web\WebRole.cs:line 57
Если я меняю личность в диспетчере IIS, я не получаю никакой ошибки. Что не так с моим кодом и почему я получаю эту ошибку?