Como obter o JSON.NET para serializar data / hora para ISO 8601?

Eu tenho um aplicativo de API da Web que retorna JSON para consumidores que podem não estar usando as tecnologias da Microsoft. Quando meu controlador retorna um objeto com propriedades DateTime como JSON, ele serializa a data neste formato:

2017-03-15T00:00:00-04:00

Isso está dando ao consumidor um pouco de dor de cabeça, pois ele espera que esteja no formato ISO 8601. Algumas pesquisas me disseram que o JSON.NET agora usa a ISO 8601 por padrão (estou usando 9.0.1). Quando executo esse código ...

Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now));

...Eu entendi isso:

2017-03-15T09:10:13.8105498-04:00

A Wikipedia os mostra como formatos ISO 8601 válidos ao expressar data e hora completas:

2017-03-15T11:45:42+00:00
2017-03-15T11:45:42Z
20170315T114542Z

No entanto, a saída que obtive acima não corresponde exatamente a nenhuma delas. Eu quero que o formatador use2017-03-15T11:45:42Z.

E provavelmente digno de outra pergunta, a adição da linha abaixo na minha configuração da API da Web parece ser ignorada, pois continua retornando JSON na data originalmente mostrada acima:

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());

Suponho que, depois de descobrir o problema principal, o problema da API da Web também possa ser resolvido.

questionAnswers(1)

yourAnswerToTheQuestion