我已经为所有本地devleoper环境和我们的本地构建服务器传递了一个单元测试,大约2年没有问题。
我现在正在将项目移动到另一个版本 - visual studio tfs online,包括托管和本地构建代理。当构建通过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
?
答案 0 :(得分:0)
在开头添加以下代码,以阐明要使用哪个PrincipalPolicy来解决您的问题:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);