.NET Framework の HttpClient クラス/オブジェクトと VS-2013 Project PhotoServer (DLL) クラス/オブジェクトの間に興味深い違いがあることがわかりました。スクリプトにバグがあるのではないかと思いました。
.NET Framework v4.5.1 を使用しています。
同期 Web Generic Handler で HttpClient スクリプトを使用しています。非同期 POST が応答を待つために「.Result」を使用していることに気付きました。したがって、機能する HttpClient を見ると、
using (var httpClient = new HttpClient())
{
var response = httpClient.PostAsync(
_baseUrl,
new FormUrlEncodedContent
(
new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Vin", parmVin),
new KeyValuePair<string, string>("ImageSize", parmImageSize)
}.ToArray()
)
).Result;
//returned string[] datatype...
var photoUrls = response.Content.ReadAsStringAsync().Result;
}
同期 Web ジェネリック ハンドラーで "GetPhotoUrlsAsync" スクリプトを使用しています。この "GetPhotoUrlsAsync" オブジェクトは、Project クラス (DLL) から取得されます。繰り返しますが、「.Result」を使用していますが、機能しません。デッドロックしてハングしました。私が知りたいのは、それがなぜなのか、そしてスクリプトにバグがあったのですか?
//[Scripts in Web Generic Handlers]...
var managerVehiclePhoto = new ManagerVehiclePhoto();
var photoUrls = managerVehiclePhoto.GetPhotoUrlsAsync("12345678901234567").Result;
//[Project Class]...
namespace BIO.Dealer.Integration.PhotoServer
{
public seal class VehiclePhotoManager
{
public async Task<string[]> GetPhotoUrlsAsync(string vin)
{
var listResponse = await _client.ListAsync(vin);
return listResponse.ToArray();
}
}
}
ありがとう...
編集#1
//Synchronous API Call...
public string[] GetPhotoUrls(string vin)
{
return GetPhotoUrlsAsync(vin).Result;
}