2014-12-04 34 views
1

我正在嘗試使用新的Azure機器學習服務,並已從我的模型創建Web服務。該服務工作正常,因爲當我使用HTTPS工具進行POST時,我得到了我期望的結果。未處理Azure ASP.NET REST Web服務調用

我的問題是讓我的ASP.NET代碼與它一起工作。我正在使用通過機器學習Web服務詳細信息頁面提供的代碼。我知道它會正確地POST一切,並且Web服務返回正確的JSON,因爲我正在跟蹤通信的數據包。但出於某種原因,我的代碼不承認這種回報。

我從兩者的Azure的網站運行此代碼的本地站點在Visual Studio中

namespace website 
{ 
    public partial class ML : Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      InvokeRequestResponseService().Wait(); 
      //await InvokeRequestResponseService(); 
     } 
     static async Task InvokeRequestResponseService() 
     { 
      using (var client = new HttpClient()) 
      { 
       ScoreData scoreData = new ScoreData() 
       { 
        FeatureVector = new Dictionary<string, string>() 
        { 
         { "age", "0" }, 
         { "education", "0" }, 
         { "education-num", "0" }, 
         { "marital-status", "0" }, 
         { "relationship", "0" }, 
         { "race", "0" }, 
         { "sex", "0" }, 
         { "capital-gain", "0" }, 
         { "capital-loss", "0" }, 
         { "hours-per-week", "0" }, 
         { "native-country", "0" }, 
        }, 
        GlobalParameters = 
         new Dictionary<string, string>() 
         { 
         } 
       }; 

       ScoreRequest scoreRequest = new ScoreRequest() 
       { 
        Id = "score00001", 
        Instance = scoreData 
       }; 

       const string apiKey = "dg/pwCd7zMPc57lfOSJqxP8nbtKGV7//XXXXXXXXXXXXXXXXXXXXXXXXXXXXgvdVl/7VWjqe/ixOA=="; // Replace this with the API key for the web service 
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey); 

       client.BaseAddress = new Uri("https://ussouthcentral.services.XXXXXXX.net/workspaces/a932e11XXXXXXXXXXX29a69170eae9ed4/services/e8796c4382fb4XXXXXXXXXXXddac357/score"); 

// GETS STUCK ON THE NEXT LINE 
       HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest); <---- NEVER RETURNS FROM THIS CALL 

       if (response.IsSuccessStatusCode) 
       { 
        string result = await response.Content.ReadAsStringAsync(); 
        Console.WriteLine("Result: {0}", result); 
       } 
       else 
       { 
        Console.WriteLine("Failed with status code: {0}", response.StatusCode); 
       } 
      } 
     } 
    } 

    public class ScoreData 
    { 
     public Dictionary<string, string> FeatureVector { get; set; } 
     public Dictionary<string, string> GlobalParameters { get; set; } 
    } 

    public class ScoreRequest 
    { 
     public string Id { get; set; } 
     public ScoreData Instance { get; set; } 
    } 
} 

回答