Es scheint, dass Microsoft versucht, die Entwickler zu zwingen, ihre Standards zu befolgen, ohne auch nur irgendwelche Optionen oder Einstellungen zu geben, um etwas anderes zu tun, was wirklich eine Schande ist, vor allem, wenn man bedenkt, dass dies ein Client ist und wir von den serverseitigen Anforderungen diktiert werden, vor allem, wenn man bedenkt, dass die serverseitigen Frameworks von Microsoft selbst dies erfordern!
Im Grunde versucht Microsoft also, uns gute Gewohnheiten aufzuzwingen, wenn wir uns mit ihren Servertechnologien verbinden, die uns zu nicht guten Gewohnheiten zwingen...
Wenn irgendjemand von Microsoft dies liest, dann bringen Sie es bitte in Ordnung...
So oder so für jeden, der den Content-Type-Header für Get etc. benötigt, während es in einer älteren .Net-Version möglich ist, die Antwort von @erdomke zu verwenden https://stackoverflow.com/a/41231353/640195 dies funktioniert leider nicht mehr in den neueren .Net-Kernversionen.
Der folgende Code wurde mit .Net Core 3.1 getestet, und aus dem Quellcode auf GitHub geht hervor, dass er auch mit neueren .Net-Versionen funktionieren sollte.
private void FixContentTypeHeaders()
{
var assembly = typeof(System.Net.Http.Headers.HttpRequestHeaders).Assembly;
var assemblyTypes = assembly.GetTypes();
var knownHeaderType = assemblyTypes.FirstOrDefault(n => n.Name == "KnownHeader");
var headerTypeField = knownHeaderType?
.GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
.FirstOrDefault(n => n.Name.Contains("HeaderType"));
if (headerTypeField is null) return;
var headerTypeFieldType = headerTypeField.FieldType;
var newValue = Enum.Parse(headerTypeFieldType, "All");
var knownHeadersType = assemblyTypes.FirstOrDefault(n => n.Name == "KnownHeaders");
var contentTypeObj = knownHeadersType.GetFields().FirstOrDefault(n => n.Name == "ContentType").GetValue(null);
if (contentTypeObj is null) return;
headerTypeField.SetValue(contentTypeObj, newValue);
}