Ćwiczenie — wykrywanie błędów przejściowych w kodzie

Ukończone

Teraz dodajmy kod do wykrywania błędów przejściowych w aplikacji czatu zespołu. Możesz zmienić aplikację w języku C#, Java lub Node.js. Aby rozpocząć pracę, skonfigurujmy aplikację do czatów.

Konfigurowanie bazy danych

Pierwszą rzeczą do zrobienia jest skonfigurowanie zaplecza aplikacji. Używa ono usługi Azure Cosmos DB z interfejsem API Mongo. Skorzystaj z poniższego zestawu instrukcji, aby skonfigurować bazę danych za pomocą interfejsu wiersza polecenia platformy Azure.

  1. Uruchom następujące polecenie w usłudze Cloud Shell, aby ustawić zmienną o nazwie COSMOS_DB_NAME z losową nazwą dla naszej bazy danych.

    COSMOS_DB_NAME=learn-cosmos-db-$RANDOM
    

    Napiwek

    Do kopiowania poleceń do schowka możesz używać przycisku Kopiuj. Aby wkleić, kliknij prawym przyciskiem myszy nowy wiersz w terminalu usługi Cloud Shell i wybierz polecenie Wklej lub użyj skrótu klawiaturowego Shift+Insert (⌘+V w systemie macOS).

  2. Uruchom następujące polecenie az cosmosdb create, aby utworzyć nowe konto bazy danych Azure Cosmos DB.

    COSMOS_DB_ENDPOINT=$(az cosmosdb create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --name $COSMOS_DB_NAME \
      --kind MongoDB \
      --query documentEndpoint \
      --output tsv)
    

    Opcja --kind MongoDB konfiguruje usługę Cosmos DB przy użyciu interfejsu MongoAPI.

    Uwaga

    Konfigurowanie konta bazy danych może potrwać pewien czas, więc zaczekaj na jej zakończenie.

  3. Po zakończeniu tworzenia naszego konta bazy danych możemy utworzyć bazę danych w ramach tego konta.

    az cosmosdb database create --name $COSMOS_DB_NAME \
      --resource-group-name <rgn>[sandbox resource group name]</rgn> \
      --db-name chat-app
    

    Opcja --db-name chat-app powoduje utworzenie bazy danych o nazwie chat-app do przechowywania dokumentów dotyczących czatów.

  4. Na koniec uruchom następujące polecenie w usłudze Azure Cloud Shell, aby pobrać parametry połączenia dla naszej nowej bazy danych.

    az cosmosdb keys list --type connection-strings \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --name $COSMOS_DB_NAME  | sed -n -e '4 p' | sed -E -e 's/.*mongo(.*)true.*/mongo\1true/'
    

    To polecenie az cosmosdb list-connection-strings zwraca obiekt JSON z informacjami o połączeniu, kierując (|) kod JSON do dwóch poleceń sed w celu wyodrębnienia tylko danych parametrów połączenia bazy danych MongoDB.

  5. Zapisz parametry połączenia, ponieważ będą potrzebne w pozostałej części modułu.

Klonowanie repozytorium aplikacji do czatów

Wykonaj poniższe kroki, aby sklonować repozytorium GitHub aplikacji do czatów za pomocą polecenia git. Możesz je wykonać bezpośrednio w usłudze Cloud Shell.

  1. Pliki źródłowe aplikacji, które tworzysz w tej lekcji, znajdują się w repozytorium GitHub. Wykonaj następujące polecenia, aby upewnić się, że znajdujesz się w katalogu głównym w usłudze Cloud Shell, a następnie sklonuj to repozytorium:

    cd ~
    git clone https://github.com/MicrosoftDocs/mslearn-handle-transient-errors-in-your-app.git
    

    Repozytorium jest klonowane do Twojego folderu głównego.

  2. Przejdź do folderu C# chatapp .

    cd ~/mslearn-handle-transient-errors-in-your-app/csharp/chatapp/
    
  3. Użyj edytora kodu, aby edytować plik Program.cs.

    code Program.cs
    
  4. Zaktualizuj zmienną connectionString przy użyciu zapisanej wcześniej wartości parametrów połączenia.

    private static IMongoDatabase database;
    private static IMongoCollection<ChatMessage> messages;
    private static string databaseName = "chat-app";
    private static string collectionName = "messages";
    private static string connectionString = 
        @"<enter cosmos db connection string here>";
    
    private static List<ChatMessage> allMessages = new List<ChatMessage>();
    
  5. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  6. Skompiluj i uruchom aplikację platformy .NET Core.

    dotnet build
    dotnet run
    

    Aplikacja wyświetla następujący interfejs w usłudze Cloud Shell.

    The chat console app interface at startup, showing the New, Read All, and Quit commands.

  7. Aby przetestować aplikację, wpisz N i wprowadź nazwę i komunikat dla nowych komunikatów. Wpisz R, aby odczytać wszystkie komunikaty opublikowane do bieżącej daty. Wpisz Q, aby zamknąć aplikację. Jeśli zamknij aplikację, a następnie uruchom ponownie, zwróć uwagę, że komunikaty wpisane w ostatniej sesji są dostępne. Aplikacja łączy się z naszą bazą danych Mongo DB w usłudze Azure Cosmos DB, aby pobrać wszystkie te dane.

Zobaczmy, co się stanie, gdy połączenie z bazą danych zaplecza zostanie przerwane.

Dodawanie kodu w celu wykrywania błędów

  1. Użyj edytora kodu.

    code Program.cs
    
  2. Przewiń w dół do metody getAllChats. Powinna ona wyglądać tak samo jak poniższa metoda.

    private static void getAllChats()
    {
        messages = database.GetCollection<ChatMessage>(collectionName);
        allMessages = messages.Find(new BsonDocument()).ToList();
        foreach (ChatMessage chat in allMessages)
        {
            Console.WriteLine($"{chat.Name}: {chat.Message}");
        }
        Console.WriteLine("\n");
    }
    

    Metoda Find wykonuje zapytanie o wszystkie dokumenty w usłudze Azure Cosmos DB. Ale co zrobić, jeśli po podjęciu próby wykonania operacji wystąpi błąd przejściowy? Zacznijmy od przechwycenia tego błędu.

  3. Zastąp implementację getAllChats() kodem w poniższym bloku. Zwróć uwagę, że dołączamy małą metodę pomocniczą o nazwie diagnose() w celu wyświetlenia komunikatu o wyjątku.

    private static void getAllChats()
    {
        messages = database.GetCollection<ChatMessage>(collectionName);
        try
        {
            allMessages = messages.Find(new BsonDocument()).ToList();
            foreach (ChatMessage chat in allMessages)
            {
                Console.WriteLine(String.Format("{0}: {1}", chat.Name, chat.Message));
            }
            Console.WriteLine("\n");
        }
        catch (MongoDB.Driver.MongoConnectionException e)
        {
            diagnose(e);
        }
        catch (System.TimeoutException e)
        {
            diagnose(e);
        }
        catch (Exception e)
        {
            diagnose(e);
        }
    }
    
    private static void diagnose(Exception e)
    {
        Console.WriteLine($"Exception raised: {e.GetType()}\n");
    }
    
  4. Zapiszmy nasze zmiany i wypróbujmy je. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  5. Skompiluj i uruchom aplikację.

  6. Skompiluj i uruchom aplikację platformy .NET Core.

    dotnet build
    dotnet run
    
  7. Poniżej znajdują się przykładowe komunikaty utworzone wcześniej.

  8. Pozostaw aplikację działającą, aby można było przeprowadzić pokaz błędu przejściowego w kolejnej sekcji.

Klonowanie repozytorium aplikacji do czatów

Wykonaj poniższe kroki, aby sklonować repozytorium GitHub aplikacji do czatów za pomocą polecenia git. Możesz je wykonać bezpośrednio w usłudze Cloud Shell.

  1. Pliki źródłowe aplikacji, które tworzysz w tej lekcji, znajdują się w repozytorium GitHub. Wykonaj następujące polecenia, aby upewnić się, że znajdujesz się w katalogu głównym w usłudze Cloud Shell, a następnie sklonuj to repozytorium:

    cd ~
    git clone https://github.com/MicrosoftDocs/mslearn-handle-transient-errors-in-your-app.git
    

    Repozytorium jest klonowane do Twojego folderu głównego.

  2. Przejdź do folderu aplikacji języka Java.

    cd ~/mslearn-handle-transient-errors-in-your-app/java/chatapp/
    
  3. Użyj edytora kodu, aby edytować plik javaChat.java.

    code javaChat.java
    
  4. Zmień wiersz 26 tak, aby zawierał przedstawione wcześniej parametry połączenia.

    public class javaChat {
    
        /*
        * Replace connection string from the Azure Cosmos DB Portal
        */
        private static ConnectionString connectionString = 
            new ConnectionString("Enter MongoDB String here");
    
  5. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  6. Skompiluj i uruchom aplikację języka Java.

    javac -cp .:lib/* javaChat.java
    java -cp .:lib/* javaChat
    
  7. Przetestuj aplikację, utwórz nowy komunikat lub odczytaj wszystkie komunikaty. Po zakończeniu wpisz Q, aby zakończyć pracę.

Dodawanie kodu w celu wykrywania błędów

  1. Użyj edytora kodu.

    code javaChat.java
    
  2. Zastąp metodę printAllMessages następującą aktualizacją. Ten fragment kodu dodaje blok try-catch w celu wykrywania błędów przejściowych z naszej bazy danych.

    private static void printAllMessages (MongoDatabase db)
    {
        MongoCollection<Document> messages = db.getCollection(colName);
    
        Block<Document> printBlock = new Block<Document>() {
            @Override
            public void apply(final Document document) {
                System.out.printf("%s: %s\n", document.get("name"), document.get("message"));
            }
        };
    
        try {
            // Return all messages
            messages.find().forEach(printBlock);
        }
        catch (com.mongodb.MongoCommandException e) {
            diagnose(e);
        }
        catch (com.mongodb.MongoSecurityException e) {
            diagnose(e);
        }
        catch (Exception e) {
            diagnose(e);
        }
    }
    
    private static void diagnose(Exception e)
    {
        System.out.printf("Exception raised: %s\n\n", e.toString());
        e.printStackTrace();
    }
    
  3. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  4. Skompiluj i uruchom aplikację.

  5. Skompiluj i uruchom aplikację języka Java.

    javac -cp .:lib/* javaChat.java
    java -cp .:lib/* javaChat
    
  6. Poniżej znajdują się przykładowe komunikaty utworzone wcześniej. Zamknij aplikację.

Klonowanie repozytorium aplikacji do czatów

Wykonaj poniższe kroki, aby sklonować repozytorium GitHub aplikacji do czatów za pomocą polecenia git. Możesz je wykonać bezpośrednio w usłudze Cloud Shell.

  1. Pliki źródłowe aplikacji, które tworzysz w tej lekcji, znajdują się w repozytorium GitHub. Wykonaj następujące polecenia, aby upewnić się, że znajdujesz się w katalogu głównym w usłudze Cloud Shell, a następnie sklonuj to repozytorium:

    cd ~
    git clone https://github.com/MicrosoftDocs/mslearn-handle-transient-errors-in-your-app.git
    

    Repozytorium jest klonowane do Twojego folderu głównego.

  2. W usłudze Cloud Shell uruchom następujące polecenie, aby przejść do folderu chatapp środowiska Node.

    cd ~/mslearn-handle-transient-errors-in-your-app/node/chatapp/
    
  3. Użyj edytora kodu, aby edytować plik server.js.

    code server.js
    
  4. Zmień wiersz 25 tak, aby zawierał parametry połączenia Mongo DB zwrócone po utworzeniu bazy danych.

    
    // Cosmos DB MongoDB connection string
    var dbUrl = '<add connection string here>';
    
    // Set networking timeouts
    dbUrl = dbUrl + '&ServerSelectionTimeoutMS=5000'; 
    
    
  5. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  6. Aby przejść do aplikacji języka Node.js w przeglądarce, musimy otworzyć port 8000 w piaskownicy. Aby otworzyć port 8000, uruchom następujące polecenie curl w usłudze Cloud Shell.

    curl -X POST http://localhost:8888/openPort/8000;
    

    Po pomyślnym otwarciu portu zostanie wyświetlony komunikat podobny do następującego.

    {"message":"Port 8000 is open","url":"https://gateway03.westus.console.azure.com/n/cc-604c-74cb7fc3/cc-604c-74cb7fc3/proxy/8000/"}
    
  7. Zanotuj wartość adresu URL w komunikacie zwróconym z polecenia curl. Jest to adres URL naszej aplikacji.

  8. Skompiluj i uruchom aplikację języka Node.js.

    npm install
    npm start
    
  9. Otwórz zapisany wcześniej adres URL w ulubionej przeglądarce. Powinien pojawić się interfejs użytkownika podobny do poniższego.

    The chat node app interface at startup, showing fields to enter name and message and buttons to send and delete a message.

  10. Przetestuj aplikację, dodając wiadomości na tablicy czatu za pośrednictwem interfejsu.

  11. Zatrzymaj serwer, naciskając klawisze CTRL+S w oknie usługi Cloud Shell.

Dodawanie kodu w celu wykrywania błędów

  1. Uruchom następujące polecenie, aby edytować plik server.js w edytorze kodu w usłudze Cloud Shell.

    code server.js
    
  2. Przewiń w dół do kodu, który nawiązuje połączenie z bazą danych, rozpoczynając od wiersza 41.

    // Set options
    const options = {
      dbName: 'chat-app',
      useNewUrlParser: true,
      reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
      reconnectInterval: 500, // Reconnect every 500ms
      connectTimeoutMS: 5000, // Give up initial connection after 5 seconds
      socketTimeoutMS: 5000 // Close sockets after 5 seconds of inactivity
    }
    
    // Connect to MongoDB 
    mongoose.connect( dbUrl, options )
      .then(() => console.log('Connection to MongoDB successful'));
    
    // Get all messages from the database
    
  3. Podczas nawiązywania połączenia z bazą danych można obsługiwać wszystkie wyjątki, dodając obietnicę catch.

    // Connect to MongoDB
    mongoose.connect( dbUrl, options )
        .then(() => console.log('Connection to MongoDB successful'))
        .catch(function(e) {
          console.log(e); // "error connecting to the database"
        });
    
  4. Dodaj blok catch do wywołania zapisania do bazy danych.

    // Save a message
    app.post('/messages', (req, res) => {
      let message = new Message(req.body);
      message.save()
        .then( () => {
          res.sendStatus(200);
          console.log('Message Posted');
        })
        .catch(function(e) {
          console.log(e); // "error connecting to the database"
        });
    });
    

    I do wywołania usunięcia.

    // Delete all messages from the database
    app.post('/deleteall', (req, res) => {
      Message.deleteMany({})
        .then( () => {
          res.sendStatus(200);
          console.log('Messages Deleted');
        })
        .catch(function(e) {
          console.log(e); // "error connecting to the database"
        });
    });
    
  5. Zapisz plik i zamknij edytor. Użyj poleceń w menu ... w prawym górnym rogu edytora lub użyj klawiszy skrótu Ctrl+S, aby zapisać plik, i Ctrl+Q, aby zamknąć edytor.

  6. Uruchom aplikację.

    npm start
    
  7. Może być konieczne odświeżenie przeglądarki. Przykładowe komunikaty utworzone wcześniej będą nadal wyświetlane.

Tworzenie błędu

  1. Zaloguj się w witrynie Azure Portal przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wybrane sieci.

  6. Usuń zaznaczenie pola wyboru Zezwalaj na dostęp z witryny Azure Portal.

  7. Zaznacz pole wyboru Rozumiem, że bieżące ustawienia spowodują zablokowanie wszystkich sieci wirtualnych i adresów IP, w tym witrynę Azure Portal.

  8. Wybierz pozycję Zapisz, aby zapisać aktualizacje konfiguracji zapory. Te zmiany umożliwiły zaporę dla konta usługi Azure Cosmos DB, która blokuje dostęp z usługi Cloud Shell, symulując awarię połączenia.

    Uwaga

    Zastosowanie tych aktualizacji zapory może potrwać pewien czas, dlatego zaczekaj na ich zakończenie przed przejściem do następnego kroku.

  9. Gdy aktualizacja konfiguracji zapory zakończy się pomyślnie, wróć do aplikacji do czatów i wybierz opcję R w celu odświeżenia wszystkich komunikatów. Odświeżanie wywołuje naszą getAllChats() metodę. Po kilku sekundach nastąpi przekroczenie limitu czasu wywołania służącego do wyszukiwania wszystkich komunikatów. Zobaczysz, że kod obsłużył wyjątek System.TimeoutException i wyświetlił go w konsoli. Aplikacja nadal działa. Jeśli teraz spróbujesz dodać nowy komunikat, zostanie wyświetlony kolejny wyjątek System.TimeoutException. Tym razem jednak wystąpi awaria aplikacji. Dlaczego? Jeśli przyjrzysz się bliżej kodowi w pliku Program.cs,** zobaczysz, że wyjątek jest obsługiwany poprawnie tylko w metodzie getAllChats(). Metoda Main() nie obsługuje wyjątku, dlatego następuje awaria aplikacji.

Aby wyłączyć zaporę i ponownie zezwolić aplikacji na odczyt i zapis w bazie danych Azure Cosmos DB, wykonaj następujące czynności.

  1. Odwiedź witrynę Azure Portal dla piaskownicy przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wszystkie sieci, a następnie wybierz pozycję Zapisz w dolnej części ekranu.

  6. Zaczekaj na zakończenie aktualizacji konfiguracji zapory, które mogą potrwać kilka minut.

To ćwiczenie pokazuje, jak wykryć błąd w aplikacji. Do tej pory potwierdziliśmy tylko wystąpienie błędu. W poniższych lekcjach zobaczymy, jak ponowić próbę wywołań, aby nasza aplikacja mogła odzyskać te rodzaje błędów.

Tworzenie błędu

  1. Zaloguj się w witrynie Azure Portal przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wybrane sieci.

  6. Usuń zaznaczenie pola wyboru Zezwalaj na dostęp z witryny Azure Portal.

  7. Zaznacz pole wyboru Rozumiem, że bieżące ustawienia spowodują zablokowanie wszystkich sieci wirtualnych i adresów IP, w tym witrynę Azure Portal.

  8. Wybierz pozycję Zapisz, aby zapisać aktualizacje konfiguracji zapory. Te zmiany umożliwiły zaporę dla konta usługi Azure Cosmos DB, która blokuje dostęp z usługi Cloud Shell, symulując awarię połączenia.

    Uwaga

    Zastosowanie tych aktualizacji zapory może potrwać pewien czas, dlatego zaczekaj na ich zakończenie przed przejściem do następnego kroku.

  9. Gdy aktualizacja konfiguracji zapory zakończy się pomyślnie, wróć do przeglądarki i spróbuj wysłać więcej komunikatów. Obserwuj komunikaty wyświetlane w usłudze Cloud Shell. Aplikacja jest nadal uruchomiona, ale przechwytujemy błędy przejściowe spowodowane przez utracone połączenie z bazą danych.

Aby wyłączyć zaporę i ponownie zezwolić aplikacji na odczyt i zapis w bazie danych Azure Cosmos DB, wykonaj następujące czynności.

  1. Odwiedź witrynę Azure Portal dla piaskownicy przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wszystkie sieci, a następnie wybierz pozycję Zapisz w dolnej części ekranu.

  6. Zaczekaj na zakończenie aktualizacji konfiguracji zapory, które mogą potrwać kilka minut.

To ćwiczenie pokazuje, jak wykryć błąd w aplikacji. Do tej pory potwierdziliśmy tylko wystąpienie błędu. W poniższych lekcjach zobaczymy, jak ponowić próbę wywołań, aby nasza aplikacja mogła odzyskać te rodzaje błędów.

Tworzenie błędu

  1. Zaloguj się w witrynie Azure Portal przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wybrane sieci.

  6. Usuń zaznaczenie pola wyboru Zezwalaj na dostęp z witryny Azure Portal.

  7. Zaznacz pole wyboru Rozumiem, że bieżące ustawienia spowodują zablokowanie wszystkich sieci wirtualnych i adresów IP, w tym witrynę Azure Portal.

  8. Wybierz pozycję Zapisz, aby zapisać aktualizacje konfiguracji zapory. Te zmiany umożliwiły zaporę dla konta usługi Azure Cosmos DB, która blokuje dostęp z usługi Cloud Shell, symulując awarię połączenia.

    Uwaga

    Zastosowanie tych aktualizacji zapory może potrwać pewien czas, dlatego zaczekaj na ich zakończenie przed przejściem do następnego kroku.

  9. Gdy aktualizacja konfiguracji zapory zakończy się pomyślnie, wróć do przeglądarki i spróbuj wysłać więcej komunikatów. Obserwuj komunikaty wyświetlane w usłudze Cloud Shell. Aplikacja jest nadal uruchomiona, ale przechwytujemy błędy przejściowe spowodowane przez utracone połączenie z bazą danych.

Aby wyłączyć zaporę i ponownie zezwolić aplikacji na odczyt i zapis w bazie danych Azure Cosmos DB, wykonaj następujące czynności.

  1. Odwiedź witrynę Azure Portal dla piaskownicy przy użyciu tego samego konta, za pomocą którego aktywowano piaskownicę.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Azure Cosmos DB.

  3. Powinno zostać wyświetlone konto bazy danych z nazwą rozpoczynającą się od learn-cosmos-db-. Wybierz to konto bazy danych.

  4. W panelu usługi Azure Cosmos DB wybierz pozycję Zapory i sieci wirtualne.

  5. Wybierz pozycję Wszystkie sieci, a następnie wybierz pozycję Zapisz w dolnej części ekranu.

  6. Zaczekaj na zakończenie aktualizacji konfiguracji zapory, które mogą potrwać kilka minut.

To ćwiczenie pokazuje, jak wykryć błąd w aplikacji. Do tej pory potwierdziliśmy tylko wystąpienie błędu. W poniższych lekcjach zobaczymy, jak ponowić próbę wywołań, aby nasza aplikacja mogła odzyskać te rodzaje błędów.