У меня есть следующая пользовательская привязка модели:
public class WebApiModelBinderDateTime : IModelBinder
{
public bool BindModel(HttpActionContext executionContext, ModelBindingContext bindingContext)
{
ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value == null)
{
return false;
}
DateTime date = (DateTime)value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
bindingContext.Model = date;
return true;
}
}
Культура настраивается в web.config следующим образом:
<globalization culture="en-GB" enableClientBasedCulture="false" uiCulture="en-GB" />
и в global.asax так:
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Проблема в том, что этот механизм связывания возвращает разные даты локально и удаленно.
Например, 2019-06-03T09:53:26.651Z
будет преобразован в 2019-06-03 10:53:26
локально, но в 2019-06-03 09:53:26
в облаке (это старая система, развернутая в облачных службах Azure).
Я попытался отладитькак локально, так и удаленно, но не обнаружил различий между CultureInfo.CurrentCulture
, ModelBindingContext
, ValueProvider
или ValueProviderResult
.
Что еще может вызывать разные часовые пояса?