Wdrażanie aplikacji internetowej ASP.NET przy użyciu SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: wdrażanie w usługach IIS jako środowisko testowe — 5 z 12
Autor : Tom Dykstra
W tej serii samouczków pokazano, jak wdrożyć (opublikować) projekt aplikacji internetowej ASP.NET zawierający bazę danych SQL Server Compact przy użyciu programu Visual Studio 2012 RC lub Visual Studio Express 2012 RC for Web. Możesz również użyć programu Visual Studio 2010, jeśli zainstalujesz aktualizację publikowania w sieci Web. Aby zapoznać się z wprowadzeniem do serii, zobacz pierwszy samouczek z serii.
W samouczku przedstawiającym funkcje wdrażania wprowadzone po wersji RC programu Visual Studio 2012 przedstawiono sposób wdrażania wersji SQL Server innych niż SQL Server Compact oraz pokazano, jak wdrożyć w Azure App Service Web Apps, zobacz temat ASP.NET Web Deployment using Visual Studio (Wdrażanie w internecie przy użyciu programu Visual Studio).
Omówienie
W tym samouczku pokazano, jak wdrożyć aplikację internetową ASP.NET w usługach IIS na komputerze lokalnym.
Podczas tworzenia aplikacji zazwyczaj testujesz, uruchamiając ją w programie Visual Studio. Domyślnie oznacza to, że używasz programu Visual Studio Development Server (znanego również jako Cassini). Program Visual Studio Development Server ułatwia testowanie podczas programowania w programie Visual Studio, ale nie działa dokładnie tak jak usługi IIS. W związku z tym możliwe, że aplikacja będzie działać poprawnie podczas testowania w programie Visual Studio, ale nie powiedzie się, gdy zostanie wdrożona w usługach IIS w środowisku hostingu.
Aplikację można dokładniej przetestować w następujący sposób:
- Użyj IIS Express lub pełnych usług IIS zamiast programu Visual Studio Development Server podczas testowania w programie Visual Studio podczas programowania. Ta metoda zwykle emuluje dokładniej sposób działania witryny w ramach usług IIS. Jednak ta metoda nie testuje procesu wdrażania ani nie sprawdza, czy wynik procesu wdrażania zostanie uruchomiony poprawnie.
- Wdróż aplikację w usługach IIS na komputerze deweloperskim przy użyciu tego samego procesu, który będzie używany później do wdrożenia aplikacji w środowisku produkcyjnym. Ta metoda weryfikuje proces wdrażania oprócz sprawdzania poprawności działania aplikacji w ramach usług IIS.
- Wdróż aplikację w środowisku testowym, które jest jak najbliżej środowiska produkcyjnego. Ponieważ środowisko produkcyjne dla tych samouczków jest dostawcą hostingu innej firmy, idealnym środowiskiem testowym byłoby drugie konto z dostawcą hostingu. To drugie konto będzie używane tylko do testowania, ale zostanie skonfigurowane tak samo jak konto produkcyjne.
W tym samouczku przedstawiono kroki dla opcji 2. Wskazówki dotyczące opcji 3 znajdują się na końcu samouczka Wdrażanie w środowisku produkcyjnym , a na końcu tego samouczka znajdują się linki do zasobów dla opcji 1.
Przypomnienie: Jeśli zostanie wyświetlony komunikat o błędzie lub coś nie działa w miarę przechodzenia przez samouczek, sprawdź stronę rozwiązywania problemów.
Konfigurowanie aplikacji do uruchamiania w średnim zaufaniu
Przed zainstalowaniem usług IIS i wdrożeniem w nim zmienisz ustawienie pliku Web.config, aby witryna była uruchamiana bardziej podobnie jak w typowym środowisku hostingu współużytkowanego.
Dostawcy hostingu zazwyczaj uruchamiają witrynę internetową w średnim zaufaniu, co oznacza, że niektóre rzeczy, które nie mogą robić. Na przykład kod aplikacji nie może uzyskać dostępu do rejestru systemu Windows i nie może odczytywać ani zapisywać plików spoza hierarchii folderów aplikacji. Domyślnie aplikacja działa w wysokim zaufaniu na komputerze lokalnym, co oznacza, że aplikacja może wykonywać czynności, które mogłyby zakończyć się niepowodzeniem podczas wdrażania jej w środowisku produkcyjnym. W związku z tym, aby środowisko testowe dokładniej odzwierciedlało środowisko produkcyjne, skonfigurujesz aplikację do uruchamiania w średnim zaufaniu.
W pliku Web.config aplikacji dodaj element zaufania w elemecie system.web , jak pokazano w tym przykładzie.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
Aplikacja będzie teraz działać w średnim zaufaniu w usługach IIS nawet na komputerze lokalnym. To ustawienie umożliwia przechwytywanie jak najszybszych prób przez kod aplikacji w celu wykonania czegoś, co zakończy się niepowodzeniem w środowisku produkcyjnym.
Uwaga
Jeśli używasz migracje Code First platformy Entity Framework, upewnij się, że masz zainstalowaną wersję 5.0 lub nowszą. W programie Entity Framework w wersji 4.3 migracje wymagają pełnego zaufania w celu zaktualizowania schematu bazy danych.
Instalowanie usług IIS i Web Deploy
Aby wdrożyć usługę IIS na komputerze dewelopera, musisz mieć zainstalowane usługi IIS i web deploy. Nie są one uwzględnione w domyślnej konfiguracji systemu Windows 7. Jeśli masz już zainstalowane usługi IIS i Web Deploy, przejdź do następnej sekcji.
Użycie Instalatora platformy sieci Web jest preferowanym sposobem instalowania usług IIS i Web Deploy, ponieważ Instalator platformy sieci Web instaluje zalecaną konfigurację usług IIS i automatycznie instaluje wymagania wstępne dla usług IIS i Web Deploy w razie potrzeby.
Aby uruchomić Instalatora platformy sieci Web w celu zainstalowania usług IIS i web deploy, użyj następującego linku. Jeśli masz już zainstalowane usługi IIS, Web Deploy lub dowolny z wymaganych składników, Instalator platformy sieci Web instaluje tylko brakujące składniki.
Ustawianie domyślnej puli aplikacji na platformę .NET 4
Po zainstalowaniu usług IIS uruchom Menedżera usług IIS, aby upewnić się, że .NET Framework w wersji 4 jest przypisana do domyślnej puli aplikacji.
W menu Start systemu Windows wybierz pozycję Uruchom, wprowadź ciąg "inetmgr", a następnie kliknij przycisk OK. (Jeśli polecenie Uruchom nie znajduje się w menu Start , możesz nacisnąć klawisz systemu Windows i język R, aby go otworzyć. Lub kliknij prawym przyciskiem myszy pasek zadań, kliknij polecenie Właściwości, wybierz kartę Menu Start , kliknij polecenie Dostosuj i wybierz polecenie Uruchom.
W okienku Connections rozwiń węzeł serwera i wybierz pozycję Pule aplikacji. W okienku Pule aplikacji , jeśli Pula aplikacji DefaultAppPool jest przypisana do platformy .NET Framework w wersji 4, jak na poniższej ilustracji, przejdź do następnej sekcji.
Jeśli widzisz tylko dwie pule aplikacji i oba z nich są ustawione na .NET Framework 2.0, musisz zainstalować ASP.NET 4 w usługach IIS:
Otwórz okno wiersza polecenia, klikając prawym przyciskiem myszy wiersz polecenia w menu Start systemu Windows i wybierając polecenie Uruchom jako administrator. Następnie uruchom aspnet_regiis.exe , aby zainstalować ASP.NET 4 w usługach IIS, używając następujących poleceń. (W systemach 64-bitowych zastąp ciąg "Framework" ciągiem "Framework64".
cd %windir%\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe –iru
To polecenie tworzy nowe pule aplikacji dla .NET Framework 4, ale domyślna pula aplikacji nadal będzie ustawiona na 2.0. Wdrożysz aplikację przeznaczoną dla platformy .NET 4 do tej puli aplikacji, więc musisz zmienić pulę aplikacji na platformę .NET 4.
Jeśli menedżer usług IIS został zamknięty, uruchom go ponownie, rozwiń węzeł serwera, a następnie kliknij pozycję Pule aplikacji , aby ponownie wyświetlić okienko Pule aplikacji .
W okienku Pule aplikacji kliknij pozycję DefaultAppPool, a następnie w okienku Akcje kliknij pozycję Ustawienia podstawowe.
W oknie dialogowym Edytowanie puli aplikacji zmień wersję .NET Framework na .NET Framework w wersji 4.0.30319 i kliknij przycisk OK.
Teraz możesz przystąpić do publikowania w usługach IIS.
Publikowanie w usługach IIS
Istnieje kilka sposobów wdrażania przy użyciu programu Visual Studio 2010 i web Deploy:
- Użyj jednorazowego publikowania w programie Visual Studio.
- Utwórz pakiet wdrożeniowy i zainstaluj go przy użyciu interfejsu użytkownika menedżera usług IIS. Pakiet wdrożeniowy składa się z pliku .zip zawierającego wszystkie pliki i metadane potrzebne do zainstalowania lokacji w usługach IIS.
- Utwórz pakiet wdrożeniowy i zainstaluj go przy użyciu wiersza polecenia.
Proces opisany w poprzednich samouczkach dotyczących konfigurowania programu Visual Studio w celu zautomatyzowania zadań wdrażania dotyczy wszystkich tych trzech metod. W tych samouczkach użyjesz pierwszej z tych metod. Aby uzyskać informacje na temat korzystania z pakietów wdrażania, zobacz ASP.NET Mapa zawartości wdrożenia.
Przed opublikowaniem upewnij się, że program Visual Studio jest uruchomiony w trybie administratora. (W menu Start systemu Windows 7 kliknij prawym przyciskiem myszy ikonę używanej wersji programu Visual Studio i wybierz polecenie Uruchom jako administrator). Tryb administratora jest wymagany do publikowania tylko w przypadku publikowania w usługach IIS na komputerze lokalnym.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity (a nie projekt ContosoUniversity.DAL) i wybierz pozycję Publikuj.
Zostanie wyświetlony kreator Publikowania w sieci Web .
Z listy rozwijanej wybierz pozycję <Nowy...>.
W oknie dialogowym Nowy profil wprowadź ciąg "Test", a następnie kliknij przycisk OK.
Ta nazwa jest taka sama jak w węźle środkowym utworzonego wcześniej pliku przekształcenia Web.Test.config. Ta korespondencja powoduje zastosowanie przekształceń Web.Test.config podczas publikowania przy użyciu tego profilu.
Kreator automatycznie przechodzi do karty Połączenie .
W polu Adres URL usługi wprowadź localhost.
W polu Witryna/aplikacja wprowadź domyślną witrynę sieci Web/ContosoUniversity.
W polu Docelowy adres URL wprowadź wartość http://localhost/ContosoUniversity
.
Ustawienie Docelowego adresu URL nie jest wymagane. Po zakończeniu wdrażania aplikacji program Visual Studio automatycznie otwiera domyślną przeglądarkę pod tym adresem URL. Jeśli nie chcesz, aby przeglądarka otwierała się automatycznie po wdrożeniu, pozostaw to pole puste.
Kliknij pozycję Zweryfikuj połączenie , aby sprawdzić, czy ustawienia są poprawne i można nawiązać połączenie z usługami IIS na komputerze lokalnym.
Zielony znacznik wyboru sprawdza, czy połączenie zakończyło się pomyślnie.
Kliknij przycisk Dalej , aby przejść do karty Ustawienia .
Pole rozwijane Konfiguracja określa konfigurację kompilacji do wdrożenia. Wartość domyślna to Release ( Wydanie), czyli to, co chcesz.
Pozostaw zaznaczone pole wyboru Usuń dodatkowe pliki w miejscu docelowym . Ponieważ jest to pierwsze wdrożenie, nie będzie jeszcze żadnych plików w folderze docelowym.
W sekcji Bazy danych wprowadź następującą wartość w polu parametry połączenia schoolContext:
Data Source=|DataDirectory|School-Prod.sdf
Proces wdrażania spowoduje umieszczenie tego parametry połączenia w wdrożonym pliku Web.config, ponieważ wybrano opcję Użyj tej parametry połączenia w czasie wykonywania.
Również w obszarze SchoolContext wybierz pozycję Zastosuj Migracje Code First. Ta opcja powoduje skonfigurowanie wdrożonego pliku Web.config w celu określenia inicjatora MigrateDatabaseToLatestVersion
. Ten inicjator automatycznie aktualizuje bazę danych do najnowszej wersji, gdy aplikacja uzyskuje dostęp do bazy danych po raz pierwszy po wdrożeniu.
W polu parametry połączenia w polu DefaultConnection wprowadź następującą wartość:
Data Source=|DataDirectory|aspnet-Prod.sdf
Pozostaw pole Aktualizuj bazę danych wyczyszczone. Baza danych członkostwa zostanie wdrożona przez skopiowanie pliku sdf w App_Data i nie chcesz, aby proces wdrażania robił cokolwiek innego z tą bazą danych.
Kliknij przycisk Dalej , aby przejść do karty Podgląd .
Na karcie Podgląd kliknij pozycję Rozpocznij podgląd , aby wyświetlić listę plików, które zostaną skopiowane.
Kliknij przycisk Opublikuj.
Jeśli program Visual Studio nie jest w trybie administratora, może zostać wyświetlony komunikat o błędzie wskazujący błąd uprawnień. W takim przypadku zamknij program Visual Studio, otwórz go w trybie administratora i spróbuj opublikować ponownie.
Jeśli program Visual Studio jest w trybie administratora, okno Dane wyjściowe zgłasza pomyślne skompilowanie i opublikowanie.
Przeglądarka zostanie automatycznie otwarta na stronie głównej platformy Contoso University uruchomionej w usługach IIS na komputerze lokalnym.
Testowanie w środowisku testowym
Zwróć uwagę, że wskaźnik środowiska pokazuje wartość "(Test)" zamiast "(Dev)", co pokazuje, że przekształcenieWeb.config wskaźnika środowiska zakończyło się pomyślnie.
Uruchom stronę Uczniowie , aby sprawdzić, czy wdrożona baza danych nie ma uczniów. Wybranie tej strony może potrwać kilka minut, ponieważ program Code First utworzy bazę danych, a następnie uruchomi metodę Seed
. (Nie zrobiono tego, gdy znajdowałeś się na stronie głównej, ponieważ aplikacja nie próbowała jeszcze uzyskać dostępu do bazy danych).
Uruchom stronę Instruktorzy , aby sprawdzić, czy kod Code First zainicjował bazę danych z danymi instruktora:
Wybierz pozycję Dodaj uczniów z menu Uczniowie , dodaj ucznia, a następnie wyświetl nowego ucznia na stronie Uczniowie , aby sprawdzić, czy możesz pomyślnie napisać do bazy danych:
Z menu Kursy wybierz pozycję Aktualizuj środki. Strona Aktualizuj środki wymaga uprawnień administratora, więc zostanie wyświetlona strona Logowanie . Wprowadź utworzone wcześniej poświadczenia konta administratora ("admin" i "Pas$w0rd"). Zostanie wyświetlona strona Środki na aktualizację , która sprawdza, czy konto administratora utworzone w poprzednim samouczku zostało prawidłowo wdrożone w środowisku testowym.
Sprawdź, czy folder Elmah istnieje tylko z plikiem zastępczym.
Przeglądanie zmian Web.config automatycznych dla Migracje Code First
Otwórz plik Web.config w wdrożonej aplikacji w lokalizacji C:\inetpub\wwwroot\ContosoUniversity i zobaczysz, gdzie proces wdrażania skonfigurowany Migracje Code First, aby automatycznie zaktualizować bazę danych do najnowszej wersji.
Proces wdrażania utworzył również nowe parametry połączenia dla Migracje Code First do użycia wyłącznie do aktualizowania schematu bazy danych:
Ten dodatkowy parametry połączenia umożliwia określenie jednego konta użytkownika na potrzeby aktualizacji schematu bazy danych i innego konta użytkownika na potrzeby dostępu do danych aplikacji. Można na przykład przypisać rolę db_owner do Migracje Code First, db_datareader i db_datawriter ról do aplikacji. Jest to typowy wzorzec ochrony, który uniemożliwia potencjalnie złośliwym kodom w aplikacji zmianę schematu bazy danych. (Na przykład może się to zdarzyć w przypadku pomyślnego ataku polegającym na wstrzyknięciu kodu SQL). Ten wzorzec nie jest używany przez te samouczki. Nie ma zastosowania do SQL Server Compact i nie ma zastosowania podczas migracji do SQL Server w późniejszym samouczku w tej serii. Witryna Cytanium oferuje tylko jedno konto użytkownika umożliwiające uzyskanie dostępu do bazy danych SQL Server utworzonej w cytanium. Jeśli możesz zaimplementować ten wzorzec w swoim scenariuszu, możesz to zrobić, wykonując następujące kroki:
- Na karcie Ustawienia kreatora Publikowanie w sieci Web wprowadź parametry połączenia, która określa użytkownika z pełnymi uprawnieniami aktualizacji schematu bazy danych, a następnie wyczyść pole wyboru Użyj tego parametry połączenia w czasie wykonywania. W wdrożonym pliku Web.config staje się
DatabasePublish
to parametry połączenia. - Utwórz przekształcenie pliku Web.config dla parametry połączenia, którego aplikacja ma używać w czasie wykonywania.
Aplikacja została wdrożona w usługach IIS na komputerze dewelopera i przetestowała ją tam. Sprawdza to, czy proces wdrażania skopiował zawartość aplikacji do właściwej lokalizacji (z wyłączeniem plików, których nie chcesz wdrożyć), a także że program Web Deploy prawidłowo skonfigurował usługi IIS podczas wdrażania. W następnym samouczku uruchomisz jeszcze jeden test, który znajdzie zadanie wdrożenia, które nie zostało jeszcze wykonane: ustawianie uprawnień folderu w folderze Elmah .
Więcej informacji
Aby uzyskać informacje o uruchamianiu usług IIS lub IIS Express w programie Visual Studio, zobacz następujące zasoby:
- IIS Express Przegląd w witrynie IIS.net.
- Wprowadzenie IIS Express na blogu Scotta Guthrie'a.
- Instrukcje: określanie serwera sieci Web dla projektów sieci Web w programie Visual Studio.
- Podstawowe różnice między usługami IIS i serwerem deweloperów ASP.NET w lokacji ASP.NET.
- Przetestuj aplikację ASP.NET MVC lub Web Forms w usługach IIS 7 w ciągu 30 sekund na blogu Ricka Andersona. Ten wpis zawiera przykłady powodów, dla których testowanie za pomocą programu Visual Studio Development Server (Cassini) nie jest tak niezawodne, jak testowanie w IIS Express i dlaczego testowanie w IIS Express nie jest tak niezawodne, jak testowanie w usługach IIS.