Système.UnauthorizedAccessException l'Accès à la clé de registre

J'ai un code qui appelle l'API TFS et les retours de l'équipe de meta-données. (par exemple, des noms d'équipe, de la zone de chemins, etc.) Le code fonctionne très bien en local dans Visual Studio ASP.NET projet MVC, mais échoue à chaque fois que je le déployer sur le serveur.

Ce que j'ai essayé cela ne fonctionne pas:

J'ai accordé à la AppPool compte d'utilisateur un contrôle total sur la clé de registre (n'a pas de travail)
Aussi, essayé l'octroi de tout le monde à la clé de registre (n'a toujours pas de travail)
Toutes les informations sur la manière de configurer les autorisations correctes de configuration de IIS déployé des applications pour frapper l'API TFS serait grandement apprécié. (message d'erreur ci-dessous)

Voici le message d'Erreur de l'application produit:

Système.UnauthorizedAccessException

Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VSCommon.0\ClientServices\TokenStorage\VisualStudio' is denied.

System.UnauthorizedAccessException: Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VSCommon.0\ClientServices\TokenStorage\VisualStudio' is denied.
   at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
   at Microsoft.Win32.RegistryKey.CreateSubKeyInternal(String subkey, RegistryKeyPermissionCheck permissionCheck, Object registrySecurityObj, RegistryOptions registryOptions)
   at Microsoft.Win32.RegistryKey.CreateSubKey(String subkey, RegistryKeyPermissionCheck permissionCheck, RegistryOptions options)
   at Microsoft.VisualStudio.Services.Common.TokenStorage.RegistryTokenStorageHelper.GetRootKey(String subkeyName)
   at Microsoft.VisualStudio.Services.Common.TokenStorage.RegistryTokenStorage.RetrieveToken(VssTokenKey tokenKey)
   at Microsoft.TeamFoundation.Client.TfsClientCredentialStorage.RetrieveToken(Uri serverUrl, VssCredentialsType credentialType)
   at Microsoft.TeamFoundation.Client.CookieCredential.OnCreateTokenProvider(Uri serverUrl, HttpWebResponse response)
   at Microsoft.TeamFoundation.Client.IssuedTokenCredential.CreateTokenProvider(Uri serverUrl, HttpWebResponse response, IssuedToken failedToken)
   at Microsoft.TeamFoundation.Client.TfsClientCredentials.TryGetTokenProvider(Uri serverUrl, IssuedTokenProvider& provider)
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestHelpers.PrepareWebRequest(HttpWebRequest webRequest, Guid sessionId, String operationName, CultureInfo cultureInfo, TfsRequestSettings settings, TfsClientCredentials credentials, IdentityDescriptor impersonate, IssuedToken& currentToken, IssuedTokenProvider& tokenProvider)
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestHelpers.CreateSoapRequest(Uri requestUri, Guid sessionId, String soapAction, String operationName, CultureInfo cultureInfo, TfsRequestSettings settings, TfsClientCredentials credentials, IdentityDescriptor impersonate, IssuedToken& currentToken, IssuedTokenProvider& tokenProvider)
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.CreateWebRequest()
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequest()
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestChannel.Request(TfsMessage message, TimeSpan timeout)
   at Microsoft.TeamFoundation.Client.Channels.TfsHttpClientBase.Invoke(TfsClientOperation operation, Object[] parameters, TimeSpan timeout, Object[]& outputs)
   at Microsoft.TeamFoundation.Framework.Client.RegistrationProxy.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Framework.Client.RegistrationService.RefreshMemoryCache()
   at Microsoft.TeamFoundation.Framework.Client.RegistrationService.Microsoft.TeamFoundation.Server.IRegistration.GetRegistrationEntries(String toolId)
   at Microsoft.TeamFoundation.Framework.Client.IdentityManagementService..ctor(TfsConnection tfsBase)
   at Microsoft.TeamFoundation.Framework.Client.IdentityManagementService2..ctor(TfsConnection tfsBase)
   at Microsoft.TeamFoundation.Client.TfsConnection.CreateInternalProxy(Type serviceType)
   at Microsoft.TeamFoundation.Client.TfsConnection.GetServiceInstance(Type serviceType, Object serviceInstance)
   at Microsoft.TeamFoundation.Client.TfsConnection.GetService(Type serviceType)
   at Microsoft.TeamFoundation.Client.TfsConnection.GetService[T]()
   at Microsoft.TeamFoundation.Client.TfsTeamService.QueryTeams(String projectId)
  • Une chance IIS est configuré pour s'exécuter ASP.NET en moyenne ou inférieure de la confiance? Qui refuse l'accès à la greffe indépendamment de vos autorisations réelles... msdn.microsoft.com/en-us/library/ff648344.aspx
  • Voir: guidanceshare.com/wiki/...
  • C'était une idée intéressante. Mais non, la confiance n'est pas le problème. J'ai fait une installation par défaut de IIS et Windows Server 2012. Par docs: "Par défaut, le niveau de confiance pour les domaines d'application pour ASP.NET est plein de confiance. La confiance partielle comportement dans ASP.NET prend effet lorsque la trustLevel de l'élément nom de l'attribut est défini sur une valeur autre que Complet." J'ai aussi vérifié le web.fichier de config dans \Windows\Microsoft.NET\Framework[version], et il semble que le niveau de confiance est plein. D'autres idées?
  • Avez-vous eu plus de chance avec ce Allan. Je suis également rencontrent le même problème. Le serveur dispose d'une installation de TFS2013 plus VS2013 et VS2012. J'ai enlevé les deux versions de VS, mais le problème persiste toujours. Étrangement j'ai déployé le Service Web sur ma machine (pas à l'aide de IIS Express, mais la création d'un site web dans IIS) et il fonctionne très bien...