Я столкнулся с той же проблемой, используя Unity с WebApi и OWIN / Katana.
Решение для меня состояло в том, чтобы использовать UnityDependencyResolver, определенный в пакете Unget.WebApi Nuget, вместо моей собственной пользовательской реализации (как @Omar Alani выше)
Install-Package Unity.WebAPI
Обратите внимание, что пакет будет попробуйте добавить файл с именем UnityConfig.cs в App_Start (имя файла, которое я использовал сам) .
В этот файл UnityConfig.cs пакет добавит код для регистрации контейнера в GlobalConfiguration.Configuration.DependencyResolver
, а это не то, что нам нужно в OWIN.
Поэтому вместо использования:
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
Измените для использования:
config.DependencyResolver = new UnityDependencyResolver(container);
Для полноты:
My UnityConfig.cs
public static class UnityConfig
{
public static void Register(HttpConfiguration config)
{
var container = new UnityContainer();
// Your mappings here
config.DependencyResolver = new UnityDependencyResolver(container);
}
}
My Startup.cs
[assembly: OwinStartup(typeof(UnityTest.BusinessLayer.Api.ApiStartup))]
namespace UnityTest.BusinessLayer.Api
{
public partial class ApiStartup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
HttpConfiguration httpConfig = new HttpConfiguration();
UnityConfig.Register(httpConfig);
ConfigureAuth(app); //In App_Start ->Startup.Auth
WebApiConfig.Register(httpConfig);
app.UseWebApi(httpConfig);
}
}
}
Сохраните часовой пояс в дополнительном столбце или выполните преобразование перед сохранением значения datetime, в зависимости от ваших потребностей.
Начиная с Mysql 4.1.3, вы можете используйте функцию CONVERT_TZ ()