我有一些代码调用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)
答案 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程序集会有点胡思乱想。
答案 2 :(得分:0)
我们遇到了这个问题并设置了#34;加载用户个人资料"在IIS应用程序池设置中 True 为我们工作。但后来又出现了同样的问题,我们找到了设置"加载用户配置文件"在IIS应用程序池设置中 False 再次修复了该问题。所以在我看来,正是这种设置的切换正在修复某些东西,而不是它设置的实际值。无论如何"加载用户个人资料"在IIS应用程序池设置为,我会尝试将其切换到相反的值,刷新应用程序池,看看是否有帮助。如果有人追查其根本原因请分享。