У меня есть пользовательский запрос, определяющий использование пользователем языка.Настройка культуры в WCF по запросу
У меня есть расширение для ClaimsPrincipal, который проверяет, что требования и формирует соответствующую культуру:
public static CultureInfo Culture(this ClaimsPrincipal principal)
{
Claim claim = principal.FindFirst(CustomClaimTypes.Language);
if (claim == null)
return CultureInfo.CreateSpecificCulture("en");
else
return CultureInfo.CreateSpecificCulture(claim.Value);
}
Я также реализован пользовательский UserNameSecurityTokenHandler и пользовательское ClaimsAuthorizationManager и оба прекрасно работает. На самом деле полное решение работает просто отлично, за исключением того факта, что я не могу найти подходящую точку в конвейере WCF, где я могу установить Thread.CurrentCulture на основе указанного выше расширения.
Я пробовал ICallContextInitializer, IDispatchMessageInspector, но ни одно из вышеприведенных действий не может действительно увидеть мой ClaimsPrincipal (он получает избыток с пустым директором). Тем не менее, в моих операциях обслуживания ClaimsPrincipal.Current правильно указывает на то, что я создал в UserNameSecurityTokenHandler.
Где я должен установить эту зависимую от требований культуру?