모든 로컬 devleoper 환경에 대해 전달 된 유닛 테스트와 약 2 년간 로컬 빌드 서버에 문제가 없습니다.ClaimTypes.PrimarySid가 테스트 할 때 Identity에서 누락되었습니다. 일부 환경에서만 사용됩니다.
이제 저는 프로젝트를 호스팅 및 로컬 빌드 에이전트와 함께 다른 빌드 - 비주얼 스튜디오 tfs 온라인으로 옮깁니다. 빌드가 TFS 온라인을 통해 실행되고 호스트 또는 개인 빌드 에이전트를 사용하는지 여부에 관계없이 테스트가 실패합니다. 개인 빌드 에이전트는 로컬 Windows 계정으로 실행되는 서비스로 등록됩니다.
호스트 된 서버 (아마도 Windows 로그인을 사용하지 않는 서버)에서는 실패 할 수도 있지만 개인 빌드 에이전트에서 실패하기 때문에 약간 신비가납니다.
var incomingIdentity = new ClaimsIdentity(Thread.CurrentPrincipal.Identity);
incomingIdentity.AddClaim(
new Claim(ClaimTypes.NameIdentifier,
((ClaimsIdentity)Thread.CurrentPrincipal.Identity)
.FindAll(ClaimTypes.PrimarySid)
.Single() //Exception: Sequence contains no elements
.Value)
);
왜 들어오는 스레드 신원에서 ClaimType.PrimarySid
이 누락 되었습니까?
, 서비스 또는 대화 형 모드를 사용하는 TFS 및 VSTS 전용 빌드 에이전트는 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name을 포함합니다. (Visual Studio에서 실행 테스트가 잘 작동합니다.) MSTest 또는 VSTest.Console.exe를 통해 테스트를 실행하면 어떻게됩니까? –