練習 - 透過 Azure 轉送混合式連線傳送要求

已完成

用戶端應用程式中的程式碼必須先連線到 Azure 轉送並向其進行驗證,應用程式才能傳送和接收訊息。

您已建立信用查核服務的轉送。 現在您想要讓內部部署接聽項元件連線到轉送,以便接收要求並傳送回應。 您也想要在用戶端應用程式中完成程式碼,這會將信用查核要求傳送到轉送並等候回應。 藉由以此方式連線到轉送服務,即可將服務公開給雲端中的元件,而不需要在內部部署防火牆上開啟連接埠。 這種方法可協助保護信用查核服務。

在本單元中,您會在傳送者和接聽項應用程式中撰寫 Azure 轉送程式碼。

複製範例應用程式

您有兩個命令列應用程式,分別會將訊息傳送到稍早建立的轉送,以及從轉送接聽訊息。 大部分的程式碼都已完成,但您必須將 Azure 轉送程式碼新增至應用程式。 讓我們從取得程式碼開始:

  • 在右側的 Azure Cloud Shell 中,使用 git 來複製範例應用程式:

    git clone https://github.com/MicrosoftDocs/mslearn-expose-hybrid-services-with-azure-relay.git
    

設定接聽項應用程式

首先,讓我們確定接聽項應用程式可以連線到轉送。 應用程式需要稍早儲存在文字檔中的命名空間位址、混合式連線名稱、金鑰名稱和主要連線金鑰。

  1. 將目錄變更為接聽項應用程式的起始程式碼,然後啟動程式碼編輯器:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    code Program.cs
    
  2. 在程式碼中,尋找「// Details of the Azure Relay (Azure 轉送的詳細資料)」註解。 在註解後面緊接著新增此程式碼:

    private const string RelayNamespace = "<namespace>.servicebus.windows.net";
    private const string ConnectionName = "creditcheckconnection";
    private const string KeyName = "RootManageSharedAccessKey";
    private const string Key = "<your key here>";
    
  3. 在程式碼中,以稍早建立的轉送名稱取代 <namespace>、從儲存的 AccessKeys.txt 檔案複製金鑰,然後貼上以取代 <your key here>

接聽項應用程式現在具有連線到 Azure 轉送並向其進行驗證所需的所有資訊。

回應接聽項應用程式中的要求

您必須將信用查核服務新增至轉送作為接聽項,以便接收傳送到轉送的要求。 程式碼必須設定接聽項來訂閱事件、處理任何要求,以及制訂回應。 例如,信用查核服務必須從要求取得名稱,然後以該人員的信用記錄回應。 當您設定接聽項時,呼叫 OpenAsync() 方法以開始接聽要求。

  1. 在接聽項應用程式的 Program.cs 程式碼檔案中,尋找「// Subscribe to the status events (訂閱狀態事件)」註解。 在註解後面緊接著新增此程式碼:

    listener.Connecting += (o, e) => { Console.WriteLine("Connecting"); };
    listener.Offline += (o, e) => { Console.WriteLine("Credit check service is offline"); };
    listener.Online += (o, e) => { Console.WriteLine("Credit check service is online"); };
    
  2. 尋找「// Obtain the name from the request (從要求取得名稱)」註解。 在註解後面緊接著新增此程式碼:

    TextReader tr = new StreamReader(context.Request.InputStream);
    String requestedName = tr.ReadToEnd();
    Console.WriteLine("A request was received to check credit for: " + requestedName);
    
  3. 尋找「// Formulate and send the response (制訂和傳送回應)」註解。 在註解後面緊接著新增此程式碼:

    context.Response.StatusCode = HttpStatusCode.OK;
    context.Response.StatusDescription = "Credit check successful";
    using (var sw = new StreamWriter(context.Response.OutputStream))
    {
        sw.WriteLine("Credit check for {0}: {1}", requestedName, creditStatuses[index]);
    }
    
  4. 尋找「// Open the listener (開啟接聽項)」註解。 在註解後面緊接著新增此程式碼:

    await listener.OpenAsync();
    Console.WriteLine("Server listening");
    
  5. 若要儲存變更,請選取 Ctrl+S,然後選取 Ctrl+Q 以關閉編輯器。

設定傳送者應用程式

想要查核客戶信用記錄的應用程式會將要求傳送到轉送,再將其轉寄到接聽項。 如同接聽項,您可以使用轉送的連線詳細資料來設定傳送者應用程式。

  1. 在 Cloud Shell 中,將目錄變更為傳送者應用程式的起始程式碼,然後啟動程式碼編輯器:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    code Program.cs
    
  2. 在 [檔案] 視窗中,選取 Program.cs

  3. 尋找「// Details of the Azure Relay (Azure 轉送的詳細資料)」註解。 在註解後面緊接著新增此程式碼:

    private const string RelayNamespace = "<namespace>.servicebus.windows.net";
    private const string ConnectionName = "creditcheckconnection";
    private const string KeyName = "RootManageSharedAccessKey";
    private const string Key = "<your key here>";
    
  4. 在程式碼中,以稍早建立的轉送名稱取代 <namespace>、從稍早儲存的 AccessKeys.txt 檔案複製金鑰,然後貼上以取代 <your key here>

提示

別忘了刪除 AccessKeys.txt。 在生產程式碼中,將這些值保留在安全的位置,例如 Azure Key Vault

傳送者應用程式現在具有連線到 Azure 轉送並向其進行驗證所需的所有資訊。

從傳送者應用程式傳送要求

若要要求信用查核,傳送者應用程式會以 HTTP GET 要求將名稱傳送到轉送。 讓我們來撰寫制訂該要求的程式碼。

  1. 在傳送者應用程式的 Program.cs 程式碼檔案中,尋找「// Create an HttpClient and formulate the request (建立 HttpClient 並制訂要求)」註解。 在註解後面緊接著新增此程式碼:

    var client = new HttpClient();
    var request = new HttpRequestMessage()
    {
        RequestUri = uri,
        Method = HttpMethod.Get,
        Content = new StringContent(name)
    };
    request.Headers.Add("ServiceBusAuthorization", token);
    
  2. 尋找「// Send the request (傳送要求)」註解。 在註解後面緊接著新增此程式碼:

    var response = await client.SendAsync(request);
    
  3. 尋找「// Display the result (顯示結果)」註解。 在註解後面緊接著新增此程式碼:

    Console.WriteLine(await response.Content.ReadAsStringAsync());
    
  4. 若要儲存變更,請選取 Ctrl+S,然後選取 Ctrl+Q 以關閉編輯器。

啟動應用程式

接聽項和傳送者應用程式已完成。 您現在可以執行這兩個應用程式、使用傳送者來要求信用查核,然後在這兩個應用程式中觀察結果。 若要同時執行這兩個應用程式,請使用第二個 Cloud Shell 執行個體來裝載傳送者。

  1. 在 Cloud Shell 中,若要建立並執行接聽項應用程式,請執行下列命令:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/listener
    dotnet run
    
  2. 當收到「伺服器正在接聽」訊息時,您可以啟動傳送者。 開啟瀏覽器的新執行個體,然後前往歡迎使用 Azure Cloud Shell (英文) 頁面。

  3. 如果系統要求選取目錄,請選擇 [Microsoft Learn 沙箱]

  4. 若要建立並執行傳送者應用程式,請執行下列命令:

    cd ~/mslearn-expose-hybrid-services-with-azure-relay/starter/sender
    dotnet run
    

測試應用程式

現在兩個應用程式都在 Cloud Shell 的個別執行個體中執行,讓我們藉由查核信用記錄來進行測試。

  1. 排列瀏覽器視窗,供可以看到兩者。

  2. 在傳送者應用程式中鍵入名稱,然後按 Enter

    在接聽程式應用程式中,您輸入的名稱應隨即出現。

    在傳送者應用程式中,來自接聽程式的回覆會隨即與信用查核的結果一起出現。

  3. 若要結束傳送者應用程式,請按 Enter。 您可以再次執行應用程式以查核其他名稱。 完成後,請關閉瀏覽器視窗。

  4. 若要結束接聽程式應用程式,請選取 Ctrl+C