Очень плохо знаком с Azure, и у меня есть внутренний веб-API по внутреннему адресу http://internal -сервер: 182 / api / rules . Я установил гибридное соединение internal-service.servicebus.windows.net. Это связано и работает.
Моя борьба заключается в том, чтобы код C # работал для подключения и извлечения данных. Через несколько дней я просмотрел различные статьи, видео и т. Д., И все они кажутся более продвинутыми, чем то, что я пытаюсь сделать, это просто вызвать Web API и прочитать JSON. Я попытался упростить код, но получил ошибку:
401 MalformedToken: Invalid authorization header: The request is missing WRAP authorization credentials.
В настоящее время у меня есть следующий код:
using (var client = new HttpClient())
{
var url = "http://internal-service.servicebus.windows.net";
var tp = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "<key goes here>");
var token = tp.GetWebTokenAsync(url, string.Empty, true, TimeSpan.FromHours(1))
.GetAwaiter()
.GetResult();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ServiceBusAuthorization", token);
var response = client.GetAsync("/api/policies").Result;
string res = "";
using (HttpContent content = response.Content)
{
// ... Read the string.
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
Label1.Text = res;
}
}
Любая помощь или направление будет высоко ценится? Когда этот код заработает, веб-приложение будет опубликовано как веб-приложение Azure.