Samouczek: wdrażanie aplikacji ASP.NET na platformie Azure przy użyciu usługi Azure SQL Database

Usługa Azure App Service oferuje wysoce skalowalną i samonaprawialną usługę hostingu w Internecie. W tym samouczku pokazano, jak wdrożyć opartą na danych aplikację ASP.NET w usłudze App Service i połączyć ją z usługą Azure SQL Database. Po zakończeniu masz aplikację ASP.NET działającą na platformie Azure i połączoną z usługą SQL Database.

Published ASP.NET application in Azure App Service

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie bazy danych w usłudze Azure SQL Database
  • Łączenie aplikacji ASP.NET z usługą SQL Database
  • Wdrażanie aplikacji na platformie Azure
  • Aktualizowanie modelu danych i ponowne wdrażanie aplikacji
  • Strumieniowe przesyłanie dzienników z platformy Azure do terminala

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

W celu ukończenia tego samouczka:

Zainstaluj program Visual Studio 2022 przy użyciu obciążeń ASP.NET i tworzenia aplikacji internetowych oraz tworzenia aplikacji na platformie Azure.

Jeśli program Visual Studio został już zainstalowany, dodaj obciążenia w programie Visual Studio, klikając kolejno pozycje Narzędzia>Pobierz narzędzia i funkcje.

Pobierz przykład

  1. Pobierz przykładowy projekt.

  2. Wyodrębnij (rozpakuj) plik dotnet-sqldb-tutorial-master.zip.

Przykładowy projekt zawiera podstawową aplikację ASP.NET MVC CRUD (create-read-update-delete, tworzenie-odczytywanie-aktualizowanie-usuwanie) korzystającą z modelu Code First platformy Entity Framework.

Uruchom aplikację

  1. Otwórz plik dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln w programie Visual Studio.

  2. Naciśnij klawisze F5, aby uruchomić aplikację. Aplikacja zostanie wyświetlona w domyślnej przeglądarce.

    Uwaga

    Jeśli tylko zainstalowano program Visual Studio i wymagania wstępne, może być konieczne zainstalowanie brakujących pakietów za pośrednictwem narzędzia NuGet.

  3. Wybierz link Utwórz nowy i utwórz kilka elementów typu zadanie do wykonania.

    New ASP.NET Project dialog box

  4. Przetestuj linki Edytuj, Szczegóły i Usuń.

Na potrzeby połączenia z bazą danych aplikacja używa kontekstu bazy danych. W tym przykładzie kontekst bazy danych używa parametrów połączenia o nazwie MyDbConnection. Parametry połączenia są ustawiane w pliku Web.config, a przywoływane w pliku Models/MyDatabaseContext.cs. Ta nazwa parametrów połączenia jest używana w dalszej części tego samouczka w celu połączenia aplikacji platformy Azure z usługą Azure SQL Database.

Publikowanie aplikacji ASP.NET na platformie Azure

  1. W obszarze Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt DotNetAppSqlDb i wybierz polecenie Publikuj.

    Publish from Solution Explorer

  2. Wybierz platformę Azure jako element docelowy, a następnie kliknij przycisk Dalej.

  3. Upewnij się, że wybrano opcję usługa aplikacja systemu Azure (Windows), a następnie kliknij przycisk Dalej.

Logowanie i dodawanie aplikacji

  1. W oknie dialogowym Publikowanie kliknij pozycję Zaloguj.

  2. Zaloguj się do subskrypcji platformy Azure. Jeśli zalogowano się już do konta Microsoft, upewnij się, że to konto zawiera Twoją subskrypcję platformy Azure. Jeśli użyte do logowania konto Microsoft nie ma subskrypcji platformy Azure, kliknij je, aby dodać prawidłowe konto.

  3. W okienku Wystąpienia usługi App Service kliknij pozycję +.

    Sign in to Azure

Konfigurowanie nazwy aplikacji internetowej

Wygenerowaną nazwę aplikacji internetowej można zachować lub zmienić na inną unikatową nazwę (prawidłowe znaki to a-z, 0-9 i -). Nazwa aplikacji internetowej jest używana jako część domyślnego adresu URL aplikacji (<app_name>.azurewebsites.net, gdzie <app_name> to nazwa aplikacji internetowej). Te nazwy muszą być unikatowe dla wszystkich aplikacji na platformie Azure.

Uwaga

Nie wybieraj jeszcze pozycji Utwórz .

Create app service dialog

Tworzenie grupy zasobów

Grupa zasobów to logiczny kontener, w którym są wdrażane i zarządzane zasoby platformy Azure, takie jak aplikacje internetowe, bazy danych i konta magazynu. Na przykład można później usunąć całą grupę zasobów w jednym prostym kroku.

  1. Obok pozycji Grupa zasobów kliknij przycisk Nowa.

    Next to Resource Group, click New.

  2. Nadaj grupie zasobów nazwę myResourceGroup.

Tworzenie planu usługi App Service

Plan usługi App Service określa lokalizację, rozmiar i funkcje farmy serwerów sieci Web, która jest hostem aplikacji. Możesz zaoszczędzić pieniądze podczas hostowania wielu aplikacji, konfigurując aplikacje internetowe w celu udostępnienia jednego planu usługi App Service.

Plany usługi App Service definiują następujące elementy:

  • Region (na przykład: Europa Północna, wschodnie stany USA, Azja Południowo-Wschodnia)
  • Rozmiar wystąpienia (mały, średni, duży)
  • Skala (od 1 do 20 wystąpień)
  • Warstwa cenowa (Bezpłatna, Współdzielona, Podstawowa, Standardowa, Premium)
  1. Obok pozycji Plan hostingu kliknij pozycję Nowy.

  2. W oknie dialogowym Konfigurowanie planu usługi App Service skonfiguruj nowy plan usługi App Service przy użyciu następujących ustawień i kliknij przycisk OK:

    Ustawienie Sugerowana wartość Więcej informacji
    Plan usługi App Service myAppServicePlan Plany usługi App Service
    Lokalizacja West Europe Regiony platformy Azure
    Rozmiar Bezpłatne Warstwy cenowe

    Create App Service plan

  3. Kliknij pozycję Utwórz i poczekaj na utworzenie zasobów platformy Azure.

  4. W oknie dialogowym Publikowanie są wyświetlane skonfigurowane zasoby. Kliknij przycisk Finish (Zakończ).

    the resources you've created

Tworzenie serwera i bazy danych

Przed utworzeniem bazy danych potrzebny jest logiczny serwer SQL. Logiczny serwer SQL to konstrukcja logiczna zawierająca grupę baz danych zarządzanych jako grupa.

  1. W oknie dialogowym Publikowanie przewiń w dół do sekcji Zależności usługi. Obok pozycji Baza danych programu SQL Server kliknij pozycję Konfiguruj.

    Uwaga

    Pamiętaj, aby skonfigurować usługę SQL Database na stronie Publikowanie zamiast strony usługi Połączenie ed.

    Configure SQL Database dependency

  2. Wybierz pozycję Azure SQL Database i kliknij przycisk Dalej.

  3. W oknie dialogowym Konfigurowanie usługi Azure SQL Database kliknij pozycję +.

  4. Obok pozycji Serwer bazy danych kliknij pozycję Nowy.

    Nazwa serwera jest używana jako część domyślnego adresu URL serwera. <server_name>.database.windows.net Musi być unikatowa na wszystkich serwerach w usłudze Azure SQL. Zmień nazwę serwera na odpowiednią wartość.

  5. Dodaj nazwę użytkownika i hasło administratora. Wymagania dotyczące złożoności hasła opisano w temacie Password Policy (Zasady haseł).

    Zapamiętaj tę nazwę użytkownika i hasło. Będą one potrzebne do późniejszego zarządzania serwerem.

    Create server

    Ważne

    Mimo że hasło w parametrach połączenia jest maskowane (w programie Visual Studio, a także w usłudze App Service), to fakt jego przechowywania zwiększa obszar aplikacji podatny na ataki. Usługa App Service może używać tożsamości usługi zarządzanej do wyeliminowania tego ryzyka przez całkowite usunięcie konieczności przechowywania wpisów tajnych w kodzie lub konfiguracji aplikacji. Aby uzyskać więcej informacji, zobacz Następne kroki.

  6. Kliknij przycisk OK.

  7. W oknie dialogowym Azure SQL Database zachowaj domyślną wygenerowaną nazwę bazy danych. Wybierz pozycję Utwórz i poczekaj na utworzenie zasobów bazy danych.

    Configure database

Konfigurowanie połączenia z bazą danych

  1. Po zakończeniu tworzenia zasobów bazy danych przez kreatora kliknij przycisk Dalej.

  2. W polu Nazwa parametry połączenia bazy danych wpisz MyDb Połączenie ion. Ta nazwa musi być zgodna z parametrami połączenia przywoływanymi w pliku Models/MyDatabaseContext.cs.

  3. W polu Nazwa użytkownika połączenia z bazą danych i Hasło połączenia z bazą danych wpisz nazwę użytkownika i hasło administratora użyte w temacie Tworzenie serwera.

  4. Upewnij się, że wybrano aplikacja systemu Azure Ustawienia i kliknij przycisk Zakończ.

    Uwaga

    Jeśli zamiast tego widzisz pliki wpisów tajnych użytkownika lokalnego, musisz skonfigurować usługę SQL Database ze strony Połączenie ed Services zamiast strony Publikowanie.

    Configure database connection string

  5. Poczekaj, aż kreator konfiguracji zakończy pracę, a następnie kliknij przycisk Zamknij.

Wdrażanie aplikacji ASP.NET

  1. Na karcie Publikowanie przewiń z powrotem do góry i kliknij pozycję Publikuj. Po wdrożeniu aplikacji ASP.NET na platformie Azure. Uruchamiana jest domyślna przeglądarka z adresem URL wdrożonej aplikacji.

  2. Dodaj kilka elementów do wykonania.

    Published ASP.NET application in Azure app

    Gratulacje! Twoja oparta na danych aplikacja ASP.NET działa w usłudze Azure App Service.

Uzyskiwanie dostępu do bazy danych lokalnie

Program Visual Studio umożliwia łatwe eksplorowanie nowej bazy danych i zarządzanie nią na platformie Azure w programie SQL Server Eksplorator obiektów. Nowa baza danych otworzyła już zaporę dla utworzonej aplikacji usługi App Service. Aby uzyskać dostęp do niego z komputera lokalnego (na przykład z programu Visual Studio), musisz otworzyć zaporę dla publicznego adresu IP komputera lokalnego. Jeśli dostawca usług internetowych zmieni publiczny adres IP, musisz ponownie skonfigurować zaporę, aby ponownie uzyskać dostęp do bazy danych platformy Azure.

Tworzenie połączenia z bazą danych

  1. Z menu Widok wybierz opcję Eksplorator obiektów SQL Server.

  2. W górnej części okna Eksplorator obiektów SQL Server kliknij przycisk Dodaj serwer SQL.

Konfigurowanie połączenia z bazą danych

  1. W oknie dialogowym Połączenie rozwiń węzeł Azure. Znajduje się tu lista wszystkich wystąpień bazy danych SQL na platformie Azure.

  2. Wybierz utworzoną wcześniej bazę danych. W dolnej części zostanie automatycznie wypełnione utworzone wcześniej połączenie.

  3. Wpisz hasło administratora bazy danych (utworzone wcześniej), a następnie kliknij przycisk Połącz.

    Configure database connection from Visual Studio

Zezwalanie na połączenia klienckie z komputera

Zostanie otwarte okno dialogowe Tworzenie nowej reguły zapory. Domyślnie serwer zezwala tylko na połączenia z jego bazami danych z usług platformy Azure, takich jak aplikacja platformy Azure. Aby nawiązać połączenie z bazą danych spoza platformy Azure, utwórz regułę zapory na poziomie serwera. Reguła zapory zezwala na dostęp z publicznego adresu IP komputera lokalnego.

Okno dialogowe jest już wypełnione informacjami o publicznym adresie IP komputera.

  1. Upewnij się, że zaznaczono opcję Dodaj mój adres IP klienta i kliknij przycisk OK.

    Create firewall rule

    Po zakończeniu tworzenia ustawienia zapory dla wystąpienia bazy danych SQL w programie Visual Studio połączenie zostanie wyświetlone w narzędziu Eksplorator obiektów SQL Server.

    W tym miejscu można wykonywać najpopularniejsze operacje, takie jak uruchamianie zapytań, tworzenie widoków oraz procedur składowanych i inne.

  2. Rozwiń połączenie >Bazy danych><tabel bazy danych.>> Kliknij prawym przyciskiem myszy tabelę Todoes i wybierz polecenie Wyświetl dane.

    Explore SQL Database objects

Aktualizowanie aplikacji za pomocą funkcji Migracje Code First

Znanych narzędzi programu Visual Studio można używać do aktualizowania bazy danych i aplikacji na platformie Azure. W tym kroku użyjesz funkcji Migracje Code First platformy Entity Framework do zmiany schematu bazy danych i opublikowania go na platformie Azure.

Aby uzyskać więcej informacji o używaniu migracji Code First platformy Entity Framework, zobacz Getting Started with Entity Framework 6 Code First using MVC 5 (Wprowadzenie do migracji Code First platformy Entity Framework 6 za pomocą MVC 5).

Aktualizowanie modelu danych

Otwórz plik Models\Todo.cs w edytorze kodu. Dodaj następującą właściwość do klasy ToDo:

public bool Done { get; set; }

Lokalne uruchamianie migracji Code First

Uruchom kilka poleceń, aby zastosować aktualizacje w lokalnej bazie danych.

  1. W menu Narzędzia kliknij kolejno pozycje Menedżer pakietów NuGet>Konsola menedżera pakietów.

  2. W oknie Konsola menedżera pakietów włącz funkcję Migracje Code First:

    Enable-Migrations
    
  3. Dodaj migrację:

    Add-Migration AddProperty
    
  4. Zaktualizuj lokalną bazę danych:

    Update-Database
    
  5. Naciśnij klawisze Ctrl+F5, aby uruchomić aplikację. Przetestuj linki Edytuj, Szczegóły i Utwórz.

Jeśli aplikacja jest ładowana bez błędów, oznacza to, że działanie funkcji Migracje Code First powiodło się. Jednak strona nadal wygląda tak samo, ponieważ logika aplikacji nie korzysta jeszcze z tej nowej właściwości.

Używanie nowej właściwości

Wprowadź zmiany kodu, aby użyć właściwości Done. Dla uproszczenia w tym samouczku zmienisz tylko widoki Index i Create, aby zobaczyć, jak działa właściwość.

  1. Otwórz plik Controllers\TodosController.cs.

  2. W wierszu 52 znajdź metodę Create() i dodaj element Done do listy właściwości w atrybucie Bind. Po zakończeniu podpis metody Create() będzie wyglądać podobnie do następującego kodu:

    public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
    
  3. Otwórz plik Views\Todos\Create.cshtml.

  4. W kodzie Razor powinien zostać wyświetlony element <div class="form-group"> korzystający z metody model.Description, a następnie inny element <div class="form-group"> korzystający z metody model.CreatedDate. Bezpośrednio po tych dwóch elementach dodaj kolejny element <div class="form-group"> korzystający z metody model.Done:

    <div class="form-group">
        @Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(model => model.Done)
                @Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
    
  5. Otwórz plik Views\Todos\Index.cshtml.

  6. Wyszukaj pusty element <th></th>. Bezpośrednio nad tym elementem dodaj następujący kod Razor:

    <th>
        @Html.DisplayNameFor(model => model.Done)
    </th>
    
  7. Znajdź element <td> zawierający metody pomocnicze Html.ActionLink(). Powyżej tego elementu <td> dodaj kolejny element <td> z następującym kodem Razor:

    <td>
        @Html.DisplayFor(modelItem => item.Done)
    </td>
    

    To już wszystko, czego potrzebujesz, aby zobaczyć zmiany w widokach Index i Create.

  8. Naciśnij klawisze Ctrl+F5, aby uruchomić aplikację.

Teraz możesz dodać element do wykonania i zaznaczyć pole Gotowe. Następnie powinien zostać on wyświetlony na stronie głównej jako ukończony. Pamiętaj, że widok Edit nie zawiera pola Done, ponieważ nie zmieniono widoku Edit.

Włączanie funkcji Migracje Code First na platformie Azure

Teraz, gdy zmiany kodu zaczęły obowiązywać (łącznie z migracją bazy danych), należy je opublikować w aplikacji platformy Azure, a także zaktualizować bazę danych SQL Database o funkcję Migracje Code First.

  1. Podobnie jak wcześniej kliknij projekt prawym przyciskiem myszy i wybierz polecenie Publikuj.

  2. Kliknij pozycję Więcej akcji>Edytuj, aby otworzyć ustawienia publikowania.

    Open publish settings

  3. Na liście rozwijanej MyDatabaseContext wybierz połączenie bazy danych dla usługi Azure SQL Database.

  4. Wybierz pozycję Wykonaj migracje Code First (wywoływane po uruchomieniu aplikacji), a następnie kliknij przycisk Zapisz.

    Enable Code First Migrations in Azure app

Publikowanie zmian

Teraz, po włączeniu funkcji Migracje Code First w aplikacji platformy Azure, opublikuj zmiany kodu.

  1. Na stronie publikowania kliknij przycisk Publikuj.

  2. Spróbuj ponownie dodać elementy do wykonania i wybierz pozycję Gotowe. Elementy te powinny być teraz widoczne na stronie głównej jako elementy ukończone.

    Azure app after Code First Migration

Nadal wyświetlane są wszystkie istniejące elementy do wykonania. Po ponownej opublikowaniu aplikacji ASP.NET istniejące dane w usłudze SQL Database nie zostaną utracone. Ponadto funkcja Migracje Code First zmienia tylko schemat danych, a istniejące dane pozostają niezmienione.

Przesyłanie strumieniowe dzienników aplikacji

Komunikaty dotyczące śledzenia można przesyłać strumieniowo bezpośrednio z aplikacji platformy Azure do programu Visual Studio.

Otwórz plik Controllers\TodosController.cs.

Każda akcja rozpoczyna się od metody Trace.WriteLine(). Na przykładzie tego kodu pokazano, jak dodać komunikaty śledzenia do aplikacji platformy Azure.

Włączanie przesyłania strumieniowego dzienników

  1. Na stronie publikowania przewiń w dół do sekcji Hosting .

  2. W prawym rogu kliknij pozycję ...>Wyświetl dzienniki przesyłania strumieniowego.

    Enable log streaming

    Dzienniki są teraz przesyłane strumieniowo do okna Dane wyjściowe.

    Log streaming in Output window

    Żadne komunikaty śledzenia nie są jednak jeszcze widoczne. Dzieje się tak, ponieważ kiedy po raz pierwszy wybierzesz polecenie Wyświetl dzienniki przesyłania strumieniowego, aplikacja platformy Azure ustawia poziom śledzenia na wartość Error, co sprawia, że rejestrowane są tylko zdarzenia błędu (za pomocą metody Trace.TraceError()).

Zmienianie poziomu śledzenia

  1. Aby zmienić poziomy śledzenia na dane wyjściowe innych komunikatów śledzenia, wróć do strony publikowania.

  2. W sekcji Hosting kliknij pozycję ...>Otwórz w witrynie Azure Portal.

  3. Na stronie zarządzania portalem dla aplikacji z menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.

  4. W obszarze Rejestrowanie aplikacji (system plików) wybierz pozycję Pełne w obszarze Poziom. Kliknij przycisk Zapisz.

    Napiwek

    Możesz eksperymentować z różnymi poziomami śledzenia, aby zobaczyć, jakie rodzaje komunikatów są wyświetlane dla poszczególnych poziomów. Na przykład na poziomie Informacyjne dostępne są wszystkie dzienniki utworzone za pomocą metod Trace.TraceInformation(), Trace.TraceWarning() i Trace.TraceError(), ale niedostępne są dzienniki utworzone za pomocą metody Trace.WriteLine().

  5. W przeglądarce przejdź ponownie do aplikacji pod adresem http://< nazwa aplikacji.azurewebsites.net>, a następnie spróbuj kliknąć aplikację listy zadań do wykonania na platformie Azure. Komunikaty śledzenia są teraz przesyłane strumieniowo do okna Dane wyjściowe w programie Visual Studio.

    Application: 2017-04-06T23:30:41  PID[8132] Verbose     GET /Todos/Index
    Application: 2017-04-06T23:30:43  PID[8132] Verbose     GET /Todos/Create
    Application: 2017-04-06T23:30:53  PID[8132] Verbose     POST /Todos/Create
    Application: 2017-04-06T23:30:54  PID[8132] Verbose     GET /Todos/Index
    

Zatrzymywanie przesyłania strumieniowego dzienników

Aby zatrzymać usługę przesyłania strumieniowego dzienników, kliknij przycisk Zatrzymaj monitorowanie w oknie Dane wyjściowe.

Stop log streaming

Czyszczenie zasobów

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli nie będziesz już potrzebować tych zasobów w przyszłości, możesz je usunąć przez usunięcie grupy zasobów.

  1. W witrynie Azure Portal na stronie Przegląd aplikacji internetowej wybierz link myResourceGroup w obszarze Grupa zasobów.
  2. Na stronie grupy zasobów upewnij się, że zasoby na liście są tymi, które chcesz usunąć.
  3. Wybierz pozycję Usuń, wpisz ciąg myResourceGroup w polu tekstowym, a następnie wybierz opcję Usuń.

Następne kroki

W tym samouczku zawarto informacje na temat wykonywania następujących czynności:

  • Tworzenie bazy danych w usłudze Azure SQL Database
  • Łączenie aplikacji ASP.NET z usługą SQL Database
  • Wdrażanie aplikacji na platformie Azure
  • Aktualizowanie modelu danych i ponowne wdrażanie aplikacji
  • Strumieniowe przesyłanie dzienników z platformy Azure do terminala

Przejdź do następnego samouczka, aby dowiedzieć się, jak łatwo poprawić zabezpieczenia połączenia usługi Azure SQL Database.

Więcej zasobów:

Chcesz zoptymalizować i zaoszczędzić na wydatkach na chmurę?