TFS 이벤트 구독 서비스를 사용하여 웹 인터페이스를 통해 구독을 동적으로 만들려고합니다. 구독은 중간 계정으로 이동합니다. 우리의 목적을 위해 두 개의 계정을 "관리자가 아닌 사용자"및 "구독 저장소"라고합니다.Team Foundation Server 2010 웹 액세스에서 가장을 (를) 깰 수 없습니다.
관리자는 "구독 저장소"계정에 대한 경고를 만들 수 있으며 구독 저장소 계정은 자체에 대한 경고를 만들 수 있지만 관리자가 아닌 사용자는 저장소 계정에 구독을 만들 수 없습니다.
나 '코드를 편집 :
액세스 거부 :이 작업을 수행 할 수있는 {사용자 계정 이름이} 자원 $ 구독에 다음의 액세스권 (들)을 필요로 나는 다음과 같은 오류 메시지가 나타납니다 사용하는 경우 :
IEventService eventService = (IEventService)this.tfsCollection.GetService(typeof(IEventService)); eventService.SubscribeEvent(userAccountIdentity.Sid, Strings.WorkItemChangedEvent, string.Format(Strings.Condition0, workItem.ToString(CultureInfo.InvariantCulture)), deliveryPreference, string.Format(Strings.AlertTag0, workItem.ToString(CultureInfo.InvariantCulture)));
모든 매개 변수가 정확하며이 값과 관련없는 내용이므로이 토론에 사용하지 마십시오. :)
tfsCollection
은 페이지의Connection.TeamProjectCollection
속성에서 가져 오는TfsTeamProjectCollection
개체입니다.내 첫번째 생각은 (이 경우, NetworkService와의) 서비스 계정을 사용할 수 있도록 가장 휴식, 그래서 다음 I는
Action
소요 도용없이 행하는 확장 방법을 만들었다 :public static void WithoutImpersonation(this Action actionToPerform) { using (var ctx = WindowsIdentity.Impersonate(IntPtr.Zero)) { try { actionToPerform(); } finally { ctx.Undo(); } } }
Action
(가장 가까운 사용자 계정 인WindowsIdentity.GetCurrentUser()
이 NetworkService 계정을 반환하는지 확인) 동안이 가장이 올바르게 손상되지만 동일한 오류로 이벤트 구독을 만들지 못합니다.TfsTeamProjectCollection
의 인증 된 사용자는 NetworkService 계정입니다.