System.UnauthorizedAccessException访问注册表项

时间:2014-01-21 20:32:13

标签: iis tfs

我有一些代码调用TFS API并返回团队元数据。 (例如团队名称,区域路径等)代码在Visual Studio ASP.NET MVC项目中本地工作正常,但每当我部署到服务器时都会失败。

我尝试过的不起作用:

我授予AppPool用户帐户对注册表项的完全控制权(无法正常工作) 此外,尝试向注册表项授予Everyone完全控制权(仍然无法正常工作) 任何有关如何为IIS部署的应用程序设置正确的配置权限以获得TFS API的任何见解将不胜感激。 (错误消息

以下是该应用产生的错误消息:

System.UnauthorizedAccessException的

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

System.UnauthorizedAccessException: Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VSCommon\12.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)

3 个答案:

答案 0 :(得分:32)

我遇到了同样的问题,并通过将IIS应用程序池设置中的“加载用户配置文件”设置为 True 来解决此问题。

我不知道这是否是TFS 2013中的一些新依赖项,或者IIS 8.5是否已更改默认值,但这会为我修复它。

答案 1 :(得分:0)

我遇到了同样的问题,但将Load User Profile设置为TRUE并不适合我。最终工作的是进入注册表并添加" HKCU \ Software \ Microsoft \ VSCommon \ 12.0 \ ClientServices"适当用户的密钥。显然,当您尝试在没有安装Visual Studio的系统上使用它们时,TFS程序集会有点胡思乱想。

无论是谁将此信息添加到http://msdn.developer-works.com/article/12173562/After+upgrade+from+TFS+2010+to+TFS+2013+the+soap+notifications+stop+working

答案 2 :(得分:0)

我们遇到了这个问题并设置了#34;加载用户个人资料"在IIS应用程序池设置中 True 为我们工作。但后来又出现了同样的问题,我们找到了设置"加载用户配置文件"在IIS应用程序池设置中 False 再次修复了该问题。所以在我看来,正是这种设置的切换正在修复某些东西,而不是它设置的实际值。无论如何"加载用户个人资料"在IIS应用程序池设置为,我会尝试将其切换到相反的值,刷新应用程序池,看看是否有帮助。如果有人追查其根本原因请分享。

相关问题