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.
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
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ę
Otwórz plik dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln w programie Visual Studio.
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.
Wybierz link Utwórz nowy i utwórz kilka elementów typu zadanie do wykonania.
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
W obszarze Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt DotNetAppSqlDb i wybierz polecenie Publikuj.
Wybierz platformę Azure jako element docelowy, a następnie kliknij przycisk Dalej.
Upewnij się, że wybrano opcję usługa aplikacja systemu Azure (Windows), a następnie kliknij przycisk Dalej.
Logowanie i dodawanie aplikacji
W oknie dialogowym Publikowanie kliknij pozycję Zaloguj.
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.
W okienku Wystąpienia usługi App Service kliknij pozycję +.
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 .
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.
Obok pozycji Grupa zasobów kliknij przycisk Nowa.
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)
Obok pozycji Plan hostingu kliknij pozycję Nowy.
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łatna Warstwy cenowe Kliknij pozycję Utwórz i poczekaj na utworzenie zasobów platformy Azure.
W oknie dialogowym Publikowanie są wyświetlane skonfigurowane zasoby. Kliknij przycisk Zakończ.
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.
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 na stronie Połączone usługi .
Wybierz pozycję Azure SQL Database i kliknij przycisk Dalej.
W oknie dialogowym Konfigurowanie usługi Azure SQL Database kliknij pozycję +.
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ść.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.
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.
Kliknij przycisk OK.
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.
Konfigurowanie połączenia z bazą danych
Po zakończeniu tworzenia zasobów bazy danych przez kreatora kliknij przycisk Dalej.
W polu Database parametry połączenia Name (Nazwa bazy danych) wpisz MyDbConnection. Ta nazwa musi być zgodna z parametrami połączenia przywoływanymi w pliku Models/MyDatabaseContext.cs.
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.
Upewnij się, że wybrano aplikacja systemu Azure Ustawienia, a następnie 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 Usługi połączone zamiast strony Publikowanie .
Poczekaj, aż kreator konfiguracji zakończy pracę, a następnie kliknij przycisk Zamknij.
Wdrażanie aplikacji ASP.NET
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.
Dodaj kilka elementów do wykonania.
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
Z menu Widok wybierz opcję Eksplorator obiektów SQL Server.
W górnej części okna Eksplorator obiektów SQL Server kliknij przycisk Dodaj serwer SQL.
Konfigurowanie połączenia z bazą danych
W oknie dialogowym Połączenie rozwiń węzeł Azure. Znajduje się tu lista wszystkich wystąpień bazy danych SQL na platformie Azure.
Wybierz utworzoną wcześniej bazę danych. W dolnej części zostanie automatycznie wypełnione utworzone wcześniej połączenie.
Wpisz hasło administratora bazy danych (utworzone wcześniej), a następnie kliknij przycisk Połącz.
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.
Upewnij się, że zaznaczono opcję Dodaj mój adres IP klienta i kliknij przycisk OK.
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.
Rozwiń połączenie >Bazy danych><tabel bazy danych.>> Kliknij prawym przyciskiem myszy tabelę
Todoes
i wybierz polecenie Wyświetl dane.
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.
W menu Narzędzia kliknij kolejno pozycje Menedżer pakietów NuGet>Konsola menedżera pakietów.
W oknie Konsola menedżera pakietów włącz funkcję Migracje Code First:
Enable-Migrations
Dodaj migrację:
Add-Migration AddProperty
Zaktualizuj lokalną bazę danych:
Update-Database
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ść.
Otwórz plik Controllers\TodosController.cs.
W wierszu 52 znajdź metodę
Create()
i dodaj elementDone
do listy właściwości w atrybucieBind
. Po zakończeniu podpis metodyCreate()
będzie wyglądać podobnie do następującego kodu:public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
Otwórz plik Views\Todos\Create.cshtml.
W kodzie Razor powinien zostać wyświetlony element
<div class="form-group">
korzystający z metodymodel.Description
, a następnie inny element<div class="form-group">
korzystający z metodymodel.CreatedDate
. Bezpośrednio po tych dwóch elementach dodaj kolejny element<div class="form-group">
korzystający z metodymodel.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>
Otwórz plik Views\Todos\Index.cshtml.
Wyszukaj pusty element
<th></th>
. Bezpośrednio nad tym elementem dodaj następujący kod Razor:<th> @Html.DisplayNameFor(model => model.Done) </th>
Znajdź element
<td>
zawierający metody pomocniczeHtml.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
iCreate
.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.
Podobnie jak wcześniej kliknij projekt prawym przyciskiem myszy i wybierz polecenie Publikuj.
Kliknij pozycję Więcej akcji>Edytuj, aby otworzyć ustawienia publikowania.
Na liście rozwijanej MyDatabaseContext wybierz połączenie bazy danych dla usługi Azure SQL Database.
Wybierz pozycję Wykonaj migracje Code First (wywoływane po uruchomieniu aplikacji), a następnie kliknij przycisk Zapisz.
Publikowanie zmian
Teraz, po włączeniu funkcji Migracje Code First w aplikacji platformy Azure, opublikuj zmiany kodu.
Na stronie publikowania kliknij przycisk Publikuj.
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.
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
Na stronie publikowania przewiń w dół do sekcji Hosting .
W prawym rogu kliknij pozycję ...>Wyświetl dzienniki przesyłania strumieniowego.
Dzienniki są teraz przesyłane strumieniowo do okna Dane wyjściowe.
Ż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ą metodyTrace.TraceError()
).
Zmienianie poziomu śledzenia
Aby zmienić poziomy śledzenia na dane wyjściowe innych komunikatów śledzenia, wróć do strony publikowania.
W sekcji Hosting kliknij pozycję ...> Otwórz w witrynie Azure Portal.
Na stronie zarządzania portalem dla aplikacji z menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
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()
iTrace.TraceError()
, ale niedostępne są dzienniki utworzone za pomocą metodyTrace.WriteLine()
.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.
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.
- W witrynie Azure Portal na stronie Przegląd aplikacji internetowej wybierz link myResourceGroup w obszarze Grupa zasobów.
- Na stronie grupy zasobów upewnij się, że zasoby na liście są tymi, które chcesz usunąć.
- Wybierz pozycję Usuń grupę zasobów, wpisz myResourceGroup w polu tekstowym, a następnie wybierz pozycję Usuń.
- Potwierdź ponownie, wybierając pozycję 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ę?