偽装を使用していて、問題は資格情報がタスクに流れていないことだと思います。この点をチェックしてWindows.Identity.GetCurrent().Name、開始コードとタスク本体の両方で の値をダンプし、それが期待どおりであることを確認することで、野生のガチョウ追跡を回避する価値があります。
上記を考えると、(正式に言えば) 実行コンテキスト (または単にセキュリティ コンテキスト) がスレッド間で流れていない方法がいくつかあります。デフォルトの動作は、コンテキストがフローされることです。そのため、何かがそれに影響を与えているに違いありません。
1) 何かが設定されました - これは、タスク内のExecutionContext.SuppressFlow()値をダンプすることで確認できます。ExecutionContext.IsFlowSuppressed()
2)<legacyImpersonationPolicy>デフォルトでfalse. の場合false、WindowsIdentityは非同期ポイント間を流れます。trueそうでない場合。これは、ExecutionContext フロー設定に関係ありません。したがってtrue、ここで問題が発生します。SecurityContext.IsWindowsIdentityFlowSuppressed()これは、 is your taskの値をダンプすることで確認できます。これは、 を使用してスレッドごとにプログラムで設定することもできますSecurityContext.SuppressFlowWindowsIdentity()。
最後に、完全を期すために、アンマネージ コードを使用している場合に<alwaysFlowImpersonationPolicy>備えて、偽装された資格情報がアンマネージ シナリオでどのようにフローされるかを制御する別の設定があります。説明されているその他の設定は、マネージ コードにのみ影響します。