Я работаю над приложением ASP.NET, которое обращается к Team Foundation Server 2010 и создает новые рабочие элементы. Приложение работает в DefaultAppPool, используя NetworkService в качестве удостоверения. Я получаю сообщение об ошибке ниже:
[UnauthorizedAccessException: Access to the path 'Cache\v10' is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +12892935
System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj) +1594
System.IO.Directory.CreateDirectory(String path) +311
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.GetDefaultCacheDirectory() +1807816
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.InitializeInternal() +225
Проблема в том, что я использую служебную учетную запись для подключения к TFS, поскольку пользователи этой формы не будут иметь разрешения на добавление рабочих элементов в TFS. Я дал и сетевой службе, и учетной записи службы конкретной формы полный контроль над корневым каталогом приложения. Я не знаю, как решить проблему с этой проблемой.
Наш сервер работает под управлением Windows Server 2008 с IIS 7. Приложение работает корректно при запуске в режиме отладки с моей локальной машины разработчика.
Есть предложения?
Редактировать: пост Гранта ниже является правильным, из того, что я смог увидеть, но я уже выполнил эти шаги до моего первоначального поста. (Вот почему путь к Cache \ v10 вместо длинного пути C: \ Program Files ... по умолчанию.) Я дал учетной записи NetworkService полную собственность на корневую папку приложения IIS, но мы все еще получали исключение UnauthorizedAccessException.
Мы смогли обойти эту проблему, превратив папку Cache в сетевую папку и предоставив NetworkService полный доступ к этой папке. Я бы предпочел не делать этого, но, похоже, сейчас работает правильно. Если кто-нибудь знает, что я могу попытаться сделать «правильно», я был бы благодарен.