從ASP.NET應用程序只需調用時掛在下面的代碼:等待GetByteArrayAsync在asp.net沒有返回
private async Task<XPathNavigator> UspsCreateAndPostRequest(string sUrl)
{
HttpClient client = new HttpClient();
byte[] urlContents = await client.GetByteArrayAsync(sUrl);
string sResponse = System.Text.Encoding.UTF8.GetString(urlContents);
... //more code to return XPathNavigator object based on response
}
如果我更改爲以下正常工作:
的是事實上,方法簽名返回是一項任務<XPathNavigator>導致該問題?謝謝。
不要在任務上調用'.Wait()',它會導致死鎖。 –
@ScottChamberlain OP說它是工作版本:) – Eser
@Eser因爲在鏈上的某個地方有一個'.Wait()'從UspsCreateAndPostRequest'返回的任務上。因爲他將它包裝在Task.Run中,所以他失去了執行上下文,這就是它工作的原因。做一個'.ConfigureAwait(false)'會用較少的資源達到相同的目標(但是,更好的辦法是將更高的等待時間固定在鏈上) –