0

Azure は初めてで、内部アドレスhttp://internal-server:182/api/policiesに内部 Web API があります。ハイブリッド接続 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;
     }

}

どんな助けや指示も大歓迎ですか?このコードが機能すると、Web アプリは Azure Web アプリとして発行されます。

4

1 に答える 1

0

正しいヘッダーを送信していないようです。

最初の提案: fiddlerのようなプロキシで呼び出しをインターセプトします。これを行うには、localhost ポート 8888 への呼び出しにプロキシ構成を追加します。この後、いくつかの要求を試して、サーバーに送信している生の http を確認できます。変更することもできます。これが機能するまで、同じ生のhttpを送信するまでコードを変更します。

詳細については、こちらを参照してください:
Microsoft Azure CreateQueue using Simple REST Client
https://github.com/ytechie/event-hubs-sas-generator

于 2018-09-11T11:50:38.883 に答える