我們正在看到一個問題,即客戶在完成API之前取消了請求並取消了請求。我們相信他們也正在關閉連接,所以請求沒有寫入IIS日誌。我試圖創建一個跑步者來複制這種行爲。我想不出的是我該如何強制關閉連接,以便服務器不能發回數據?C#HttpClient - 我可以強制關閉連接嗎?
這裏是我當前的代碼:
private static async Task RunMe()
{
var cts = new CancellationTokenSource();
cts.CancelAfter(5000);
using (var client = new HttpClient())
{
try
{
client.DefaultRequestHeaders.ConnectionClose = true;
client.DefaultRequestHeaders.Add("x-apikey", "some key");
Console.WriteLine("making request");
using (var response = await client.GetAsync("https://foo.com/api/apitest/testcancel", cts.Token))
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Request completed: {result}");
}
}
finally
{
client.CancelPendingRequests();
Console.WriteLine("about to dispose the client");
client.Dispose();
}
}
}
}
代碼正確取消後5秒的請求,但IIS似乎仍然在API調用完成(設置爲10秒)後發回的數據。
如何關閉連接,以便IIS在5秒超時後無法發回任何數據?
只需使用一個插座並在發送請求後砰的一聲門。 – CodeCaster
@CodeCaster這似乎是一個很好的計劃。我在這裏嘗試了一個例子,但它沒有發送任何數據。你有一個與https協同工作的樣本嗎? https://gist.github.com/jayhilden/ea6603adb22c36daeae6 – jhilden