我发现 .NET Framework 的 HttpClient 类/对象和 VS-2013 Project PhotoServer (DLL) 类/对象之间存在有趣的差异。这让我想知道脚本是否存在错误。
我正在使用 .NET Framework v4.5.1。
我在同步 Web 通用处理程序中使用 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;
}