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...
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et l'ont résolu en définissant le "Charger le Profil Utilisateur" dans le pool d'applications IIS paramètres de Vrai.
Je ne sais pas si c'est une nouvelle dépendance dans TFS 2013 ou si IIS 8.5 a changé la valeur par défaut, mais il les corrige pour moi.
Je suis tombé sur cette même question, mais le réglage de Charger le Profil Utilisateur à VRAI n'a pas fonctionné pour moi. Ce qui a fini par travailler dans le registre et l'ajout d'un "HKCU\Software\Microsoft\VSCommon\12.0\Serviceclientele" la clé de l'utilisateur concerné(s). Apparemment, le TFS assemblées d'obtenir un peu de mauvaise humeur quand vous essayez de les utiliser sur des systèmes sans Visual Studio est installé.
De crédit va à celui qui a ajouté cette information à http://msdn.developer-works.com/article/12173562/After+upgrade+from+TFS+2010+to+TFS+2013+the+soap+notifications+stop+working.
Nous avons eu ce problème et la définition de la "de Charger le Profil Utilisateur" dans le pool d'applications IIS paramètres de Vrai a travaillé pour nous. Mais ensuite, le même problème est revenu et nous avons trouvé le réglage "de Charger le Profil Utilisateur" dans le pool d'applications IIS paramètres de Faux résolu le problème une fois de plus. Donc, il me semble que c'est l'activation de ce paramètre qui est la réparation de quelque chose, plutôt que la valeur réelle, il est réglé. N'importe quoi "de Charger le Profil Utilisateur" dans le pool d'applications IIS est configuré pour, je voudrais essayer de basculement à l'opposé de la valeur, d'actualiser l'application de la piscine et voir si cela aide. Si quelqu'un à des pistes de la cause première de cette s'il vous plaît partager.