Сбой контроллера WebApi - проблема с культурой потоков

У меня есть метод контроллера, который не удается в операторе возврата

[HttpGet("{id}")]
public UserModel Get(int id)
{
    System.Threading.Thread.CurrentThread.CurrentCulture =
        new System.Globalization.CultureInfo("en-CA");

    System.Threading.Thread.CurrentThread.CurrentUICulture =
        new System.Globalization.CultureInfo("en-CA");

    BP.DataAccess.DataUtilities.DatabaseCommand.ConnectionString =
        _configuration["connectionStrings:PrimaryConnection"];

    UserModel user = UserService.GetUserById(id);

    return user;
}

UserModel класс имеет:

public int RoleTypeId { get; set; }
private ListModels.RoleTypeModel _RoleType;
public ListModels.RoleTypeModel RoleType
{
    get
    {
        _RoleType = Trisura.BP.Core.ListServices
            .RoleTypeService.GetRoleTypeById(RoleTypeId);
        return _RoleType;
    }
    private set { _RoleType = value; }
}

public static RoleTypeModel GetRoleTypeById(int id)
{
    int cultureId = CultureService.GetThreadCultureId();

    List<ListModels.RoleTypeModel> localizedList =
        GetRoleTypesLocalizedList(cultureId);

    ListModels.RoleTypeModel roleTypeModel =
        localizedList.Where(roletype => roletype.Id == id).FirstOrDefault();

    if (roleTypeModel == null)
    {
        throw new CoreExceptions.ObjectNotFoundInDatabaseException(
            string.Format("The requested role type (ID = {0}) was not found.", id));
    }

    return roleTypeModel;
}

public static RoleTypeModel GetRoleTypeById(int id)
{
    // this returns "en-US" (0)  instead of "en-CA" (1)
    int cultureId = CultureService.GetThreadCultureId(); 

    List<ListModels.RoleTypeModel> localizedList = GetRoleTypesLocalizedList(cultureId);
    ListModels.RoleTypeModel roleTypeModel =
        localizedList.Where(roletype => roletype.Id == id).FirstOrDefault();

    if (roleTypeModel == null)
    {
        throw new CoreExceptions.ObjectNotFoundInDatabaseException(
            string.Format("The requested role type (ID = {0}) was not found.", id));

        return roleTypeModel;
    }
}

когда контроллер нажимает return user;, это не удается, потому что поток CurrentCulture установлен в en-US даже я прямо сказал, что культура en-CA,

У кого-нибудь есть объяснение? Это происходит в отдельной теме? Как убедиться, что моя модель будет работать с той же культурой?

0 ответов

Другие вопросы по тегам