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