Share via


Aan de slag met HTTP-aanvragen voor hybride verbindingen van Relay in .NET

In deze snelstart maakt u .NET maakt u toepassingen voor afzenders en ontvangers waarmee berichten worden verzonden en ontvangen met behulp van het HTTP-protocol. De toepassingen maken gebruik van de functie Hybride verbindingen van Azure Relay. Zie Azure Relay voor meer informatie over Azure Relay in het algemeen.

In deze snelstart voert u de volgende stappen uit:

  1. Een Relay-naamruimte maken met behulp van Azure Portal.
  2. Een hybride verbinding in die naamruimte maken met behulp van Azure Portal.
  3. Een serverconsoletoepassing (listener) schrijven om berichten te ontvangen.
  4. Een clientconsoletoepassing (afzender) schrijven om berichten te verzenden.
  5. Toepassingen uitvoeren.

Vereisten

Voor het voltooien van deze zelfstudie moet aan de volgende vereisten worden voldaan:

Een naamruimte maken

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer Alle services in het linkermenu. Selecteer Integratie, zoek naar Relays, beweeg de muis over Relays en selecteer Vervolgens Maken.

    Schermopname van de selectie van Relays -> Knop Maken.

  3. Voer op de pagina Naamruimte maken de volgende stappen uit:

    1. Kies een Azure-abonnement waarin u de naamruimte wilt maken.

    2. Kies bij Resourcegroep een bestaande resourcegroep waarin de naamruimte moet worden geplaatst of maak een nieuwe resourcegroep.

    3. Voer een naam in voor de Relay-naamruimte.

    4. Selecteer de regio waarin uw naamruimte moet worden gehost.

    5. Selecteer Controleren en maken onderaan de pagina.

      Schermopname van de pagina Naamruimte maken.

    6. Selecteer Maken op de pagina Beoordelen en maken.

    7. Na enkele minuten ziet u de Relay-pagina voor de naamruimte.

      Schermopname van de startpagina voor Relay-naamruimte.

Beheerreferenties ophalen

  1. Selecteer op de pagina Relay beleid voor gedeelde toegang in het menu links. `

  2. Selecteer RootManageSharedAccessKey op de pagina Beleid voor gedeelde toegang.

  3. Selecteer onder SAS-beleid: RootManageSharedAccessKey de knop Kopiƫren naast primaire Verbinding maken ion-tekenreeks. Met deze actie kopieert u de verbindingsreeks naar het Klembord voor later gebruik. Plak deze waarde in Kladblok of een andere tijdelijke locatie.

  4. Herhaal de vorige stap om de waarde voor de Primaire sleutel te kopiƫren en plakken naar een tijdelijke locatie zodat u deze later kunt gebruiken.

    Schermopname van de verbindingsgegevens voor Relay-naamruimte.

Een hybride verbinding maken

Volg deze stappen op de relaypagina voor uw naamruimte om een hybride verbinding te maken.

  1. Selecteer in het linkermenu onder Entiteiten de optie Hybride Verbinding maken ions en selecteer vervolgens + Hybride Verbinding maken ion.

    Schermopname van de pagina Hybride Verbinding maken ions.

  2. Voer op de pagina Hybride Verbinding maken ion maken een naam in voor de hybride verbinding en selecteer Maken.

    Schermopname van de pagina Hybride Verbinding maken maken.

Een servertoepassing (listener) maken

Maak in Visual Studio een C#-consoletoepassing om berichten van de Relay te beluisteren en te ontvangen.

Een consoletoepassing maken

Maak in Visual Studio een nieuw Console-app (.NET Framework)-project.

Het pakket Relay NuGet toevoegen

  1. Klik met de rechtermuisknop op het nieuwe project en selecteer NuGet-pakketten beheren.
  2. Selecteer Bladeren en zoek naar Microsoft.Azure.Relay. Selecteer Microsoft Azure Relay in de lijst met zoekresultaten.
  3. Selecteer Installeren om de installatie uit te voeren. Sluit het dialoogvenster.

Code schrijven om berichten te ontvangen

  1. Vervang de bestaande using-instructies bovenaan het bestand Program.cs door de volgende using-instructies:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using Microsoft.Azure.Relay;
    using System.Net;
    
  2. Voeg constanten toe aan de klasse Program voor de gegevens van de hybride verbinding. Vervang de tijdelijke aanduidingen tussen punthaken door de waarden die u hebt verkregen bij het maken van de hybride verbinding. Zorg ervoor dat u de volledig gekwalificeerde naamruimte gebruikt.

    // replace {RelayNamespace} with the name of your namespace
    private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
    
    // replace {HybridConnectionName} with the name of your hybrid connection
    private const string ConnectionName = "{HybridConnectionName}";
    
    // replace {SAKKeyName} with the name of your Shared Access Policies key, which is RootManageSharedAccessKey by default
    private const string KeyName = "{SASKeyName}";
    
    // replace {SASKey} with the primary key of the namespace you saved earlier
    private const string Key = "{SASKey}";
    
  3. Voeg de RunAsync-methode toe aan de klasse Program:

    private static async Task RunAsync()
    {
        var cts = new CancellationTokenSource();
    
        var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(KeyName, Key);
        var listener = new HybridConnectionListener(new Uri(string.Format("sb://{0}/{1}", RelayNamespace, ConnectionName)), tokenProvider);
    
        // Subscribe to the status events.
        listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
        listener.Offline += (o, e) => { Console.WriteLine("Offline"); };
        listener.Online += (o, e) => { Console.WriteLine("Online"); };
    
        // Provide an HTTP request handler
        listener.RequestHandler = (context) =>
        {
            // Do something with context.Request.Url, HttpMethod, Headers, InputStream...
            context.Response.StatusCode = HttpStatusCode.OK;
            context.Response.StatusDescription = "OK, This is pretty neat";
            using (var sw = new StreamWriter(context.Response.OutputStream))
            {
                sw.WriteLine("hello!");
            }
    
            // The context MUST be closed here
            context.Response.Close();
        };
    
        // Opening the listener establishes the control channel to
        // the Azure Relay service. The control channel is continuously 
        // maintained, and is reestablished when connectivity is disrupted.
        await listener.OpenAsync();
        Console.WriteLine("Server listening");
    
        // Start a new thread that will continuously read the console.
        await Console.In.ReadLineAsync();
    
        // Close the listener after you exit the processing loop.
        await listener.CloseAsync();
    }
    
  4. Voeg de volgende coderegel toe aan de methode Main in de klasse Program:

    RunAsync().GetAwaiter().GetResult();
    

    Het voltooide bestand Program.cs moet er als volgt uitzien:

    namespace Server
    {
        using System;
        using System.IO;
        using System.Threading;
        using System.Threading.Tasks;
        using Microsoft.Azure.Relay;
        using System.Net;
    
        public class Program
        {
            private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
            private const string ConnectionName = "{HybridConnectionName}";
            private const string KeyName = "{SASKeyName}";
            private const string Key = "{SASKey}";
    
            public static void Main(string[] args)
            {
                RunAsync().GetAwaiter().GetResult();
            }
    
            private static async Task RunAsync()
            {
                var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(KeyName, Key);
                var listener = new HybridConnectionListener(new Uri(string.Format("sb://{0}/{1}", RelayNamespace, ConnectionName)), tokenProvider);
    
                // Subscribe to the status events.
                listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
                listener.Offline += (o, e) => { Console.WriteLine("Offline"); };
                listener.Online += (o, e) => { Console.WriteLine("Online"); };
    
                // Provide an HTTP request handler
                listener.RequestHandler = (context) =>
                {
                    // Do something with context.Request.Url, HttpMethod, Headers, InputStream...
                    context.Response.StatusCode = HttpStatusCode.OK;
                    context.Response.StatusDescription = "OK";
                    using (var sw = new StreamWriter(context.Response.OutputStream))
                    {
                        sw.WriteLine("hello!");
                    }
    
                    // The context MUST be closed here
                    context.Response.Close();
                };
    
                // Opening the listener establishes the control channel to
                // the Azure Relay service. The control channel is continuously 
                // maintained, and is reestablished when connectivity is disrupted.
                await listener.OpenAsync();
                Console.WriteLine("Server listening");
    
                // Start a new thread that will continuously read the console.
                await Console.In.ReadLineAsync();
    
                // Close the listener after you exit the processing loop.
                await listener.CloseAsync();
            }
        }
    }
    

Een clienttoepassing maken (afzender)

Maak in Visual Studio een C#-consoletoepassing om berichten naar de Relay te sturen.

Een consoletoepassing maken

Als u de optie 'Clientautorisatie vereist' hebt uitgeschakeld bij het maken van de Relay, kunt u aanvragen verzenden naar de URL voor hybride Verbinding maken ions met elke browser. Voor toegang tot beveiligde eindpunten moet u een token maken en doorgeven in de header ServiceBusAuthorization, die hier wordt weergegeven.

Maak in Visual Studio een nieuw Console-app (.NET Framework)-project.

Het pakket Relay NuGet toevoegen

  1. Klik met de rechtermuisknop op het nieuwe project en selecteer NuGet-pakketten beheren.
  2. Selecteer de optie Prerelease insluiten.
  3. Selecteer Bladeren en zoek naar Microsoft.Azure.Relay. Selecteer Microsoft Azure Relay in de lijst met zoekresultaten.
  4. Selecteer Installeren om de installatie uit te voeren. Sluit het dialoogvenster.

Code schrijven om aanvragen te verzenden

  1. Vervang de bestaande using-instructies bovenaan het bestand Program.cs door de volgende using-instructies:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Net.Http;
    using Microsoft.Azure.Relay;
    
  2. Voeg constanten toe aan de klasse Program voor de gegevens van de hybride verbinding. Vervang de tijdelijke aanduidingen tussen punthaken door de waarden die u hebt verkregen bij het maken van de hybride verbinding. Zorg ervoor dat u de volledig gekwalificeerde naamruimte gebruikt.

    // replace {RelayNamespace} with the name of your namespace
    private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
    
    // replace {HybridConnectionName} with the name of your hybrid connection
    private const string ConnectionName = "{HybridConnectionName}";
    
    // replace {SAKKeyName} with the name of your Shared Access Policies key, which is RootManageSharedAccessKey by default
    private const string KeyName = "{SASKeyName}";
    
    // replace {SASKey} with the primary key of the namespace you saved earlier
    private const string Key = "{SASKey}";
    
  3. Voeg de volgende methode toe aan de klasse Program:

    private static async Task RunAsync()
    {
        var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                KeyName, Key);
        var uri = new Uri(string.Format("https://{0}/{1}", RelayNamespace, ConnectionName));
        var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromHours(1))).TokenString;
        var client = new HttpClient();
        var request = new HttpRequestMessage()
        {
            RequestUri = uri,
            Method = HttpMethod.Get,
        };
        request.Headers.Add("ServiceBusAuthorization", token);
        var response = await client.SendAsync(request);
        Console.WriteLine(await response.Content.ReadAsStringAsync());        Console.ReadLine();
    }
    
  4. Voeg de volgende coderegel toe aan de methode Main in de klasse Program.

    RunAsync().GetAwaiter().GetResult();
    

    Het bestand Program.cs moet er dan zo uitzien:

    using System;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Net.Http;
    using Microsoft.Azure.Relay;
    
    namespace Client
    {
        class Program
        {
            private const string RelayNamespace = "{RelayNamespace}.servicebus.windows.net";
            private const string ConnectionName = "{HybridConnectionName}";
            private const string KeyName = "{SASKeyName}";
            private const string Key = "{SASKey}";
    
            static void Main(string[] args)
            {
                RunAsync().GetAwaiter().GetResult();
            }
    
            private static async Task RunAsync()
            {
               var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                KeyName, Key);
                var uri = new Uri(string.Format("https://{0}/{1}", RelayNamespace, ConnectionName));
                var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromHours(1))).TokenString;
                var client = new HttpClient();
                var request = new HttpRequestMessage()
                {
                    RequestUri = uri,
                    Method = HttpMethod.Get,
                };
                request.Headers.Add("ServiceBusAuthorization", token);
                var response = await client.SendAsync(request);
                Console.WriteLine(await response.Content.ReadAsStringAsync());
            }
        }
    }
    

De toepassingen uitvoeren

  1. Voer de servertoepassing uit. U ziet de volgende tekst in het consolevenster:

    Online
    Server listening
    
  2. Voer de clienttoepassing uit. U ziet hello! in het clientvenster. De client heeft een HTTP-aanvraag verzonden naar de server en de server heeft gereageerd met een hello!.

  3. Nu kunt u de consolevensters sluiten door in beide consolevenster op Enter te drukken.

Gefeliciteerd, u hebt een volledige toepassing voor hybride Verbinding maken ions gemaakt.

Volgende stappen

In deze snelstart hebt u een .NET-client- en servertoepassing gemaakt waarmee berichten worden verzonden en ontvangen met behulp van het HTTP-protocol. De functie Hybride verbindingen van Azure Relay ondersteunt tevens WebSockets voor het verzenden en ontvangen van berichten. Zie de snelstart over WebSockets voor informatie over het gebruik van WebSockets met hybride verbindingen van Azure Relay.

In deze snelstart hebt u .NET Framework gebruikt om client- en servertoepassingen te maken. Zie de snelstart over WebSockets in Node.js of de snelstart over HTTP in Node.js voor informatie over het schrijven van client- en servertoepassingen in Node.js.