Team Foundation Server Proxy 疑难解答

更新:2007 年 11 月

本主题列出了使用 Team Foundation Server Proxy 和应用层时可能会遇到的以下常见问题。

  • 尝试访问文件缓存根目录时出现 UnauthorizedAccessException

  • 由代理服务帐户密码过期引起的 AccessDenied 异常

  • 尝试启动 QueryProxyStatistics Web 方法时出现 InvalidOperationException

  • 尝试生成新私钥时出现 CryptographicException

如果在查看这些提示以及各个错误消息帮助主题中的提示后仍然无法解决问题,请访问 Microsoft 技术论坛中有关 Visual Studio Team System 的内容 (https://go.microsoft.com/fwlink/?LinkId=54490)。这些论坛为各种疑难解答主题提供了可搜索线索,它们在相关人员的密切监视下,可以快速解答您的提问。

尝试访问文件缓存根目录时出现 UnauthorizedAccessException

如果试图访问“CacheRoot”文件夹,您可能会在代理服务器的事件日志中发现以下(或类似的)错误消息:

TF53010: Team Foundation 组件中发生了意外情况。

应将此处包含的信息提供给您的站点管理人员。

技术信息(供管理人员使用):

异常消息: 对路径“C:\Program Files\Microsoft Team Foundation 2005\Web Services\VersionControlProxy\Data\00000000-0000-0000-0000-000000000000\00”的访问被拒绝。(类型 UnauthorizedAccessException)

异常堆栈跟踪:

   位于 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

   位于 System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity)

   位于 System.IO.DirectoryInfo.Create(),

当代理服务帐户不具有访问缓存根文件夹的正确权限时会发生此错误。若要更正此错误,请确认代理服务帐户对缓存根文件夹的“读取”和“写入”权限都设置为“允许”。

由代理服务帐户密码过期引起的 AccessDenied 异常

如果代理服务帐户的密码已过期,并且代理服务试图从应用层下载文件,则会返回以下错误:

详细消息: ErrorDownloadingFromAppTier

异常消息: <html><head><title>错误</title></head><body>错误: 访问被拒绝。</body></html>(类型 ProxyException)

异常堆栈跟踪:

    位于 Microsoft.TeamFoundation.VersionControl.Server.Proxy.ProxyRepository.GetDownloadResponse(String downloadUrl)

   位于 Microsoft.TeamFoundation.VersionControl.Server.Proxy.CacheMissDownloadStatus.StartDownload()

   位于 Microsoft.TeamFoundation.VersionControl.Server.Proxy.CacheMissWriter.PerformDownload(Object stateInfo)

错误: 访问被拒绝

若要避免此问题,请使用脚本通知您密码将要过期。您应该对这些通知做出响应,在服务受到影响之前更新服务帐户密码。有关这类脚本的示例,请参见 Microsoft Developer Network 技术文章 (https://go.microsoft.com/fwlink/?LinkId=69960)。

尝试启动 QueryProxyStatistics Web 方法时出现 InvalidOperationException

如果启动 ProxyStatistics Web 方法,您可能会在代理服务器的事件日志中看到以下(或类似的)错误消息:

System.InvalidOperationException: 无法生成临时类 (result=1)。

错误 CS2001: 未能找到源文件“C:\WINDOWS\TEMP\fxe6fkpm.0.cs”

错误 CS2008: 未指定输入

   位于 System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, CompilerParameters parameters, Evidence evidence)

   位于 System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, CompilerParameters parameters, Assembly assembly, Hashtable assemblies)

   位于 System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)

   位于 System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Evidence evidence)

   位于 System.Web.Services.Protocols.XmlReturn.GetInitializers(LogicalMethodInfo[] methodInfos)

   位于 System.Web.Services.Protocols.XmlReturnWriter.GetInitializers(LogicalMethodInfo[] methodInfos)

   位于 System.Web.Services.Protocols.MimeFormatter.GetInitializers(Type type, LogicalMethodInfo[] methodInfos)

   位于 System.Web.Services.Protocols.HttpServerType..ctor(Type type)

   位于 System.Web.Services.Protocols.HttpServerProtocol.Initialize()

   位于 System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

若要更正此错误,请确认代理服务帐户对“%WINDIR%\Temp”文件夹的“读取”、“读取和执行”和“列出文件夹内容”权限都设置为“允许”。

尝试生成新私钥时出现 CryptographicException

如果 RSACryptoProvider 不能生成新私钥,您可能会在代理服务器的事件日志中看到以下(或类似的)CryptographicException:

异常: CryptographicException

消息: 键集不存在

堆栈跟踪:

   位于 System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)

   位于 System.Security.Cryptography.SafeProvHandle._FreeCSP(IntPtr pProvCtx)

   位于 System.Security.Cryptography.SafeProvHandle.ReleaseHandle()

   位于 System.Runtime.InteropServices.SafeHandle.InternalDispose()

   位于 System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing)

   位于 System.Runtime.InteropServices.SafeHandle.Dispose()

   位于 System.Security.Cryptography.RSACryptoServiceProvider.Dispose(Boolean disposing)

   位于 System.Security.Cryptography.AsymmetricAlgorithm.System.IDisposable.Dispose()

   位于 Microsoft.VisualStudio.Hatteras.Util.RequestSignatures.GenerateNewPrivateKey(Int32 keyLength)

   位于 Microsoft.VisualStudio.VersionControl.Server.AdministrationManager.GenerateRepositoryKey(IPrincipal userPrincipal, Int32 keyLength)

   位于 Microsoft.VisualStudio.Hatteras.Server.Global.Initialize()

   位于 Microsoft.VisualStudio.TeamFoundation.Server.TeamFoundationApplication.InitializeInternal()

当 RSACryptoProvider 创建了密钥文件但由于权限不足而无法删除该密钥文件时,会导致此错误。

说明:

此问题只会发生在应用层。

若要更正此错误,请确认代理服务帐户对“Documents and Settings”文件夹中 RSA 计算机密钥文件夹(例如,C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA)的“完全控制”权限设置为“允许”。

请参见

概念

管理与 Team Foundation Server Proxy 之间的远程连接

Team Foundation Server Proxy Web.Config 文件设置