Mein Problem liegt in der PostAsync
Aktion der HttpClient
. Ein Code-Auszug, der in meiner C# -Konsolen-App verwendet wird, verhält sich völlig anders als der gleiche Code, der in ASP.NET Core verwendet wird.HttpClient verhält sich anders auf ASP.NET Core
using (var httpClient = new HttpClient())
{
var parameters = new Dictionary<string, string> { { "various", "params" } };
var encodedContent = new FormUrlEncodedContent(parameters);
var response = await httpClient.PostAsync(url, encodedContent).ConfigureAwait(false);
if (response.StatusCode == HttpStatusCode.OK)
{
var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait (false);
return responseContent;
}
}
Aufruf der Methode (GetData enthält den oberen Code):
var unprocessedString = GetData("http://www.whatever.com/info.html").Result;
Im unprocessedString
ich mit einem gültigen HTML-String am Ende
Die exakt gleichen Code angewendet in meinem ASP .NET Core liefert ein völlig anderes Ergebnis.
Die zurückgegebenen Informationen sehen aus wie ein riesiges JS-Skript, ich habe die Kopfzeilen der Fiddler-Anfrage überprüft und der einzige Unterschied ist der Header Accept-Encoding: gzip, deflate
, der vom ASP-Aufruf erstellt wurde. Ich habe ihn entfernt und die Ergebnisse bleiben gleich.
<html><head><meta http-equiv="Pragma" content="no-cache"/>
<script>
a huge javascript function
<noscript>Please enable JavaScript to view the page content.</noscript>
Äh, nein, 'HttpClient' ändert nicht die Art, wie Antworten auf verschiedenen Plattformen verarbeitet werden. Wenn die Serverantwort unterschiedlich ist, gibt es einen Unterschied in der Clientanforderung. –
Die Client-Anfragen waren identisch, deshalb habe ich erwähnt, dass ich den exakt gleichen Code (einschließlich des angerufenen Servers) im Post verwendet habe. Ich denke, ich habe das Problem, es gibt verschiedene Versionen von System.Net.Http zwischen .NET und .NET Core – ExtremeSwat