0
我有一個自定義聲明,用於確定用戶將要使用的語言。在基於聲明的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中創建的標識。
我應該在哪裏設置這種依賴於聲明的文化?