Использование гибридного подключения Azure для подключения к внутреннему веб-API - PullRequest
0 голосов
/ 11 сентября 2018

Очень плохо знаком с 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.

1 Ответ

0 голосов
/ 11 сентября 2018

Похоже, вы не отправляете правильный заголовок.

Первое предложение: перехватите вызов с помощью прокси-сервера, например fiddler , для этого добавьте конфигурацию прокси-сервера к вашему вызову на локальный порт 8888, после этого вы можете попробовать выполнить какой-либо запрос и посмотреть необработанный http, которым вы являетесь. отправляя на сервер, вы также можете изменять его до тех пор, пока он не будет работать, как только вы это сделаете, измените свой код, пока он не отправит тот же необработанный http.

Вы можете найти больше информации об этом здесь:
Microsoft Azure CreateQueue с использованием Simple REST Client
https://github.com/ytechie/event-hubs-sas-generator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...