ฉันมีบริการ WCF พร้อม "ImpersonationOption.Required" ดูเหมือนว่าการเลียนแบบจะไม่เกิดขึ้นเมื่อใช้ความเท่าเทียม ตัวอย่างเช่น:
Parallel.ForEach(items => results.Add(SystemUtil.WindowsUser.Name)
จะส่งคืนตัวเลขพร้อมกับผู้ใช้ที่แอบอ้าง และส่งคืนตัวเลขพร้อมกับผู้ใช้กลุ่มแอพ การแอบอ้างบุคคลอื่นสามารถทำงานร่วมกับความเท่าเทียมได้หรือไม่?
ดีที่สุด,
มาร์ก
อัปเดต:
นี่คือรหัสจริงบนฝั่งบริการ IIS
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public string[] WhoAmI(int numOfTests)
{
var tests = new List<int>();
for (var i = 0; i < numOfTests; i++)
tests.Add(i);
var results = new ConcurrentBag<string>();
Parallel.ForEach(tests, (test) => results.Add(WindowsIdentity.GetCurrent(false).Name));
return results.ToArray();
}
ถ้าฉันผ่าน numOfTests = 10 มันจะสร้างงาน 10 งานและส่งคืน WindowsIndentity Name ของแต่ละงาน สิ่งที่ฉันได้รับคือ ~70% "IIS APPPOOL.NET v4.0" และ ~30% ฉัน
ฉันจะตั้งค่าให้ตัวตนของฉันกลายเป็น Parallel.ForEach ได้อย่างไร
ขอบคุณ!
foreach(timer in timers) { results.Add(WindowsIdentity.GetCurrent(false).Name; }
) แล้วคุณจะเห็นปัญหา คุณจะไม่ต้องทำอะไรกับtimer
ภายในลูป ดังนั้นคุณเพียงแค่รันโค้ดเดิมซ้ำแล้วซ้ำอีก แน่นอนว่าคุณจะได้ผลลัพธ์เหมือนเดิม แต่ละครั้ง. - person Scott Chamberlain   schedule 25.09.2012