Сериализатор ServiceStack CSV помещает дополнительные кавычки вокруг даты сериализации
Я использую ServiceStack на своем сайте, чтобы позволить пользователям загружать CSV одного из наборов данных системы. В методе настройки моего AppHost я предоставляю собственный сериализатор для DateTime. Это выглядит так
JsConfig<DateTime>.SerializeFn = time =>
{
var result = time;
if (time.Kind == DateTimeKind.Unspecified)
{
result = DateTime.SpecifyKind(result, DateTimeKind.Local);
}
return result.ToString(CultureInfo.InvariantCulture);
};
При использовании формата csv все даты заключаются в дополнительные кавычки в результате; например, Результат - "" "24.06.2015 16:22:16""", когда я ожидаю, что это будет "24.06.2015 16:22:16"
Мне кажется, это должно быть ошибкой в сериализации ServiceStack. Есть ли способ предотвратить это? Ниже приведен полный пример проблемы, возникающей при отправке запроса в /csv/oneway/Request.
public class AppHost : AppHostBase
{
/// <summary>
/// Default constructor.
/// Base constructor requires a name and assembly to locate web service classes.
/// </summary>
public AppHost()
: base("CSVBug", typeof(MyService).Assembly)
{
}
public override void Configure(Container container)
{
JsConfig<DateTime>.SerializeFn = time =>
{
var result = time;
if (time.Kind == DateTimeKind.Unspecified)
{
result = DateTime.SpecifyKind(result, DateTimeKind.Local);
}
return result.ToString(CultureInfo.InvariantCulture);
};
}
}
public class Request
{
}
public class Response
{
public DateTime DateTime { get; set; }
}
public class MyService : Service
{
public object Any(Request reuqest)
{
return new Response()
{
DateTime = DateTime.Now
};
}
}
и Global.asax.cs
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
1 ответ
Решение
Теперь это должно быть решено с помощью этого коммита, который доступен с v4.0.41+, который теперь доступен на MyGet.