gpt4 book ai didi

ASP.NET Web API 在同一个 Web 应用程序中的两个 API 之间以不同的方式格式化日期时间

转载 作者:行者123 更新时间:2023-12-04 02:08:00 25 4
gpt4 key购买 nike

我正在使用常规方式在我的项目中配置 Web API,但是,我确实有一个需要支持的旧版 API。

我像这样配置日期时间格式:

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var converters = jsonFormatter.SerializerSettings.Converters;
converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-ddTHH:mm:ss" });

这正是我想要的大多数 API Controller ,但是,对于旧版 API,它需要使用旧的 MS AJAX 格式输出 DateTimes,如下所示:

/Date(1345302000000)/



所以有人知道我如何为我的一个 API 模块指定不同的 JSON 日期格式化程序并保持全局配置不变吗?或者任何替代方案,例如每个 API 的配置都可以。
谢谢

最佳答案

Web API 有一个称为 Per-Controller 配置的概念,仅适用于像您这样的场景。每个 Controller 的配置使您能够在每个 Controller 的基础上进行配置。

public class MyConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
// controllerSettings.Formatters is a cloned list of formatters that are present on the GlobalConfiguration
// Note that the formatters are not cloned themselves
controllerSettings.Formatters.Remove(controllerSettings.Formatters.JsonFormatter);

//Add your Json formatter with the datetime settings that you need here
controllerSettings.Formatters.Insert(0, **your json formatter with datetime settings**);
}
}

[MyConfig]
public class ValuesController : ApiController
{
public string Get(int id)
{
return "value";
}
}

在上面的示例中,ValuesController 将在您的日期时间设置中使用 Json 格式化程序,但您的其余 Controller 将使用 GlobalConfiguration 上的一个。

关于ASP.NET Web API 在同一个 Web 应用程序中的两个 API 之间以不同的方式格式化日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com