Устранение неполадок с Team Foundation Server Proxy
Обновлен: Ноябрь 2007
В этом разделе перечислены распространенные проблемы, возникающие при использовании прокси-сервера и уровня приложений Team Foundation Server.
UnauthorizedAccessException — при попытке обратиться к корню файлового кэша.
Исключение AccessDenied, вызванное истечением срока действия пароля учетной записи службы прокси-сервера.
InvalidOperationException при попытке запустить веб-метод QueryProxyStatistics.
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).
InvalidOperationException при попытке запустить веб-метод QueryProxyStatistics.
При попытке запустить веб-метод ProxyStatistics вы можете увидеть следующее (или похожее) сообщение об ошибке в журнале событий прокси-сервера:
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 создает файл ключа, но не может удалить файл из-за недостаточных разрешений.
Примечание. |
---|
Проблема возникает только на уровне приложений. |
Для исправления этой ошибки убедитесь, что для учетной записи службы прокси-сервера разрешение Полный доступ на папку RSA-ключа компьютера в папке Documents and Settings (например, C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA) задано как Разрешить.
См. также
Основные понятия
Управление удаленными подключениями к прокси-серверу Team Foundation Server