Mam usługę WebService, która tworzy zadanie i zadanie kontynuacji.Kontynuacja Zadanie w tym samym temacie, co poprzednie
W pierwszym zadaniu możemy ustawić Thread.CurrentPrincipal
Stąd Gdy ContinuationTask zaczyna to już nie ma Thread.CurrentPrincipal.
Chciałbym określić w ContinuationTask że powinien działać w tym samym wątku jako jego poprzednika.
Szukałem w Internecie, ale znalazłem tylko wymaganie, aby wątek działał w SynchronizationContext, dlatego zaczynam myśleć, że brakuje mi podstawowej zasady, szczególnie odnośnie tego, jak powinna działać Thread.Principal.
wiążąc zadań wątków jest to zły pomysł i podatne na błędy w przypadku wyjątków. Zamiast naprawiać główny wątek i wymagać, aby wszystkie zadania używały tego samego wątku, spróbuj przekazać obiekt WindowsID lub token do zadań jako stan i podszyć się pod użytkownika w każdym zadaniu. W przeciwnym razie istnieje ryzyko zmiany tożsamości ThreadPool w przypadku wystąpienia wyjątku i zapomnienia o usunięciu tożsamości –
PS. Jakiego rodzaju tożsamości używasz? WindowsIdentity czy coś innego? –
Wdrożyliśmy nasz własny IPrincipal i to sama aplikacja dokonuje uwierzytelnienia. Wydaje się, że najlepiej jest przekazać IPrincipal wśród zadań. –