2011-02-17 3 views
2

Team Foundation Server 2010에 액세스하고 새 작업 항목을 만드는 ASP.NET 응용 프로그램에서 작업하고 있습니다. 응용 프로그램은 NetworkService를 ID로 사용하여 DefaultAppPool에서 실행됩니다. 캐치 내가이 양식의 사용자가 TFS에서 작업 항목을 추가 할 수있는 권한이 없습니다 때문에, TFS에 연결하는 서비스 계정을 사용하고 있다는 점이다ASP.NET 응용 프로그램의 캐시 폴더에서 System.IO 액세스 오류가 발생했습니다.

[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 

: 나는 아래의 오류를 받고 있어요. 네트워크 서비스와 양식 별 서비스 계정에 응용 프로그램의 루트 디렉토리에 대한 모든 권한을 부여했습니다. 이 문제를 해결하는 데 문제가있는 방법을 모르겠습니다.

우리 서버는 IIS 7이 설치된 Windows Server 2008을 실행하고 있습니다. 로컬 Dev 시스템에서 디버그 모드로 실행하면 응용 프로그램이 올바르게 작동합니다.

제안 사항?

편집 : 내가 볼 수 있었던 것보다 그랜트의 게시물이 정확하지만, 원래의 게시물 앞에 이미 그 단계를 완료했습니다. (경로가 C : \ Program Files ... 기본 경로 대신 Cache \ v10 인 이유입니다.) NetworkService 계정에 IIS 응용 프로그램의 루트 폴더에 대한 완전한 소유권을 부여했지만 UnauthorizedAccessException을 받고있었습니다.

캐시 폴더를 네트워크 공유로 설정하고 NetworkService에 공유에 대한 전체 액세스 권한을 부여하여이 문제를 해결할 수있었습니다. 나는 이것을하지 않아도 좋겠지 만 지금은 제대로 작동하고있는 것 같습니다. "옳은 일"을하려고 노력할 수있는 사람이 누구인지 알면 감사 할 것입니다.

+0

동일한 상자에 있습니까? (TFS 및 웹 응용 프로그램)? –

+0

아니요, 다른 서버에 있습니다. –

답변

6

작업 항목 추적 개체 모델을 사용하는 경우 메타 데이터 캐시를 저장하기 위해 디스크에 폴더가 있어야합니다.

일반 사용자의 경우 C : \ Users \ username \ AppData \ Local \ Microsoft \ Team Foundation \ 3.0 \ Cache에 있습니다. 네트워크 서비스의 경우 C : \ ProgramData \ Microsoft \ Team Foundation \ 3.0 \ Cache

그러나 귀하의 경우 네트워크 서비스에 해당 폴더를 만들거나 쓸 수있는 권한이없는 것 같습니다.

  1. 폴더를 만들고 다른 곳에 폴더를 만들고 폴더
  2. 로컬 IIS_WPG 그룹 액세스 권한을 부여하고 폴더에 로컬 IIS_WPG 그룹 액세스 권한을 부여하고, 설정 :

    당신은 두 가지 옵션이 있습니다 당신의 Web.config의 키는

구체적

<appSettings><add key="WorkItemTrackingCacheRoot" value="pathtofolder"/>

,이에서 폴더의 위치를 ​​얻을 수 있습니다 코드 :

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"Microsoft\Team Foundation\3.0\Cache");

+0

이것은 모두 정확합니다. 그러나 게시했을 때 이미 내 자신의 캐시 폴더를 설정했습니다. 원래의 게시물을 더 자세히 편집했습니다. –

+0

방금이 문제가 발생했습니다. 그랜트, 언제나처럼, 당신은 나의 영원한 감탄을 가지고 있습니다 :-) –

+0

고마워요! 이 문제도 실행 중이었습니다 ... – RoelF

관련 문제