我尝试更改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管理器更改身份我没有得到任何错误。我的代码出了什么问题,为什么会出现此错误?
分支和绑定和分离的担忧。你可以首先尝试调试,并只应用一个小的改变,看看CommitChanges是否工作或仍然失败?注释掉你的身份代码,看看你是否设法改变另一个属性... –