0

.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;
    }
4

2 に答える 2