0
我有一個單元測試已經通過了所有本地devleoper環境,並且我們的本地構建服務器在大約2年內沒有問題。ClaimTypes.PrimarySid在測試時從身份丟失,但只在某些環境下使用
我現在正在將項目移動到另一個構建 - 包含託管和本地構建代理的在線視覺工作室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
從傳入的線程身份丟失?
根據我的測試(輸出所有索賠型)MSTest.exe,VSTest.Console.exe, TFS和VSTS私人構建代理服務或交互模式,它只包含http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name。 (Visual Studio中的運行測試正常工作)如果通過MSTest或VSTest.Console.exe運行測試,結果如何? –