c # - Fejl under ændring af identitet for applikationsbassin

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at ændre identitet til applikationsbassin på Windows Azure. Mit projekt bruger denne applikationspulje, når der arbejdes på Windows Azure. Programfilen bruger som standard NetworkService-identitet, men jeg skal bruge en anden identitet. Jeg forsøger at ændre det i OnStart() event af WebRole på denne måde:


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();
}


Men jeg får undtagelse med næste besked:


    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...WebWebRole.cs:line 57


Hvis jeg ændrer identitet i IIS-manager, får jeg ikke nogen fejl. Hvad er der forkert med min kode, og hvorfor får jeg denne fejl?

Bedste reference


Opdateringer til programmetHost.config kræver administrative rettigheder. Når du kører lokalt, er du administrator. I skyen kører din RoleEntryPoint som en normal bruger, medmindre du hæver rollen. Har du gjort det?


Kontroller, om du har <Runtime executionContext="elevated"/> angivet i din rolleerklæring i ServiceDefinition.csdef.


Rediger : Wade viste også hvordan man gør dette ved hjælp af en lidt anden metode (se kommentarerne). Prøv også dette [5]

Andre referencer 1


ok, her er mit svar. Denne fejl opstår, fordi NetworkService-identiteten ikke har adgang til læsningen på iisWasKey-nøglen. Yderligere oplysninger og hvordan du løser dette problem, jeg fandt her: Fejlmeddelelsen 'Nøgleord eksisterer ikke', når du forsøger at ændre identiteten af ​​en applikationspulje [6]