Udostępnij za pomocą


ASP.NET MVC 4 — niestandardowe filtry akcji

Autor: Web Camps Team

Pobierz zestaw szkoleniowy obozów internetowych

ASP.NET MVC udostępnia filtry akcji do wykonywania logiki filtrowania przed wywołaniem metody akcji lub po jej wywołaniu. Filtry akcji to atrybuty niestandardowe, które zapewniają deklaratywny sposób dodawania zachowania przed akcjami i po akcji do metod akcji kontrolera.

W tym laboratorium praktycznym utworzysz atrybut filtru akcji niestandardowej w rozwiązaniu MvcMusicStore, aby przechwycić żądania kontrolera i zarejestrować aktywność lokacji w tabeli bazy danych. Filtr rejestrowania można dodać przez wstrzyknięcie do dowolnego kontrolera lub akcji. Na koniec zostanie wyświetlony widok dziennika przedstawiający listę odwiedzających.

W tym praktycznym laboratorium założono, że masz podstawową wiedzę na temat ASP.NET MVC. Jeśli wcześniej nie użyto ASP.NET MVC , zalecamy zapoznanie się z ASP.NET praktycznym laboratorium MVC 4 Fundamentals .

Uwaga

Cały przykładowy kod i fragmenty kodu znajdują się w zestawie szkoleniowym web camps dostępnym w witrynie Microsoft-Web/WebCampTrainingKit Releases. Projekt specyficzny dla tego laboratorium jest dostępny w ASP.NET filtrów akcji niestandardowych MVC 4.

Cele

W tym praktycznym laboratorium dowiesz się, jak wykonywać następujące działania:

  • Tworzenie atrybutu filtru akcji niestandardowej w celu rozszerzenia możliwości filtrowania
  • Stosowanie atrybutu filtru niestandardowego przez wstrzyknięcie do określonego poziomu
  • Globalne rejestrowanie filtrów akcji niestandardowych

Wymagania wstępne

Aby ukończyć to laboratorium, musisz mieć następujące elementy:

Ustawienia

Instalowanie fragmentów kodu

Dla wygody większość kodu, którym będziesz zarządzać w tym laboratorium, jest dostępna jako fragmenty kodu programu Visual Studio. Aby zainstalować fragmenty kodu, uruchom plik .\Source\Setup\CodeSnippets.vsi .

Jeśli nie znasz fragmentów kodu programu Visual Studio Code i chcesz dowiedzieć się, jak z nich korzystać, możesz zapoznać się z dodatkiem z tego dokumentu "Dodatek C: Używanie fragmentów kodu".


Ćwiczenia

To praktyczne laboratorium składa się z następujących ćwiczeń:

  1. Ćwiczenie 1. Rejestrowanie akcji
  2. Ćwiczenie 2. Zarządzanie wieloma filtrami akcji

Szacowany czas ukończenia tego laboratorium: 30 minut.

Uwaga

Każde ćwiczenie jest dołączone do folderu End zawierającego wynikowe rozwiązanie, które należy uzyskać po zakończeniu ćwiczeń. Możesz użyć tego rozwiązania jako przewodnika, jeśli potrzebujesz dodatkowej pomocy podczas wykonywania ćwiczeń.

Ćwiczenie 1. Rejestrowanie akcji

W tym ćwiczeniu dowiesz się, jak utworzyć niestandardowy filtr dziennika akcji przy użyciu ASP.NET dostawców filtrów MVC 4. W tym celu zastosujesz filtr rejestrowania do witryny MusicStore, która będzie rejestrować wszystkie działania w wybranych kontrolerach.

Filtr rozszerzy metodę ActionFilterAttributeClass i zastąpi metodę OnActionExecuting , aby przechwycić każde żądanie, a następnie wykonać akcje rejestrowania. Informacje kontekstowe dotyczące żądań HTTP, wykonywania metod, wyników i parametrów będą udostępniane przez klasę ASP.NET MVC ActionExecutingContext.

Uwaga

ASP.NET MVC 4 ma również domyślnych dostawców filtrów, których można użyć bez tworzenia filtru niestandardowego. ASP.NET MVC 4 udostępnia następujące typy filtrów:

  • Filtr autoryzacji , który podejmuje decyzje dotyczące zabezpieczeń, czy wykonać metodę akcji, taką jak przeprowadzanie uwierzytelniania lub weryfikowanie właściwości żądania.
  • Filtr akcji , który opakowuje wykonywanie metody akcji. Ten filtr może wykonywać dodatkowe przetwarzanie, takie jak dostarczanie dodatkowych danych do metody akcji, sprawdzanie wartości zwracanej lub anulowanie wykonywania metody akcji
  • Filtr wyników , który opakowuje wykonywanie obiektu ActionResult. Ten filtr może wykonywać dodatkowe przetwarzanie wyniku, takie jak modyfikowanie odpowiedzi HTTP.
  • Filtr wyjątku , który jest wykonywany, jeśli istnieje nieobsługiwany wyjątek zgłaszany gdzieś w metodzie akcji, począwszy od filtrów autoryzacji i kończąc na wykonaniu wyniku. Filtry wyjątków mogą służyć do wykonywania zadań, takich jak rejestrowanie lub wyświetlanie strony błędu.

Aby uzyskać więcej informacji na temat dostawców filtrów, odwiedź ten link MSDN: (https://msdn.microsoft.com/library/dd410209.aspx) .

Informacje o funkcji rejestrowania aplikacji ze sklepu MVC Music Store

To rozwiązanie magazynu muzyki zawiera nową tabelę modelu danych na potrzeby rejestrowania witryn, ActionLog, z następującymi polami: Nazwa kontrolera, który otrzymał żądanie, Nazwa wywołana akcja, Adres IP klienta i Sygnatura czasowa.

Model danych. Tabela ActionLog.

Model danych — tabela ActionLog

Rozwiązanie udostępnia widok MVC ASP.NET dla dziennika akcji, który można znaleźć w witrynie MvcMusicStores/Views/ActionLog:

Widok dziennika akcji

Widok dziennika akcji

Dzięki tej strukturze wszystkie prace będą skoncentrowane na przerywaniu żądania kontrolera i wykonywaniu rejestrowania przy użyciu filtrowania niestandardowego.

Zadanie 1 . Tworzenie niestandardowego filtru w celu przechwycenia żądania kontrolera

W tym zadaniu utworzysz niestandardową klasę atrybutów filtru, która będzie zawierać logikę rejestrowania. W tym celu rozszerzysz klasę ASP.NET MVC ActionFilterAttribute i zaimplementujesz interfejs IActionFilter.

Uwaga

ActionFilterAttribute jest klasą bazową dla wszystkich filtrów atrybutów. Udostępnia ona następujące metody wykonywania określonej logiki po wykonaniu akcji kontrolera i przed wykonaniem jej:

  • OnActionExecuting(ActionExecutingContext filterContext): Tuż przed wywołaniem metody akcji.
  • OnActionExecuted(ActionExecutedContext filterContext): po wywołaniu metody akcji i przed wykonaniem wyniku (przed wyświetleniem renderowania).
  • OnResultExecuting(ResultExecutingContext filterContext): Tuż przed wykonaniem wyniku (przed wyświetleniem renderowania).
  • OnResultExecuted(ResultExecutedContext filterContext): po wykonaniu wyniku (po renderowaniu widoku).

Przesłaniając dowolną z tych metod do klasy pochodnej, można wykonać własny kod filtrowania.

  1. Otwórz rozwiązanie Begin znajdujące się w folderze \Source\Ex01-LoggingActions\Begin.

    1. Zanim przejdziesz dalej, musisz pobrać brakujące pakiety NuGet. W tym celu kliknij menu Projekt i wybierz pozycję Zarządzaj pakietami NuGet.

    2. W oknie dialogowym Zarządzanie pakietami NuGet kliknij pozycję Przywróć, aby pobrać brakujące pakiety.

    3. Na koniec skompiluj rozwiązanie, klikając pozycję Kompiluj rozwiązanie kompilacji | .

      Uwaga

      Jedną z zalet korzystania z narzędzia NuGet jest to, że nie trzeba dostarczać wszystkich bibliotek w projekcie, zmniejszając rozmiar projektu. Za pomocą narzędzi NuGet Power Tools, określając wersje pakietów w pliku Packages.config, będzie można pobrać wszystkie wymagane biblioteki przy pierwszym uruchomieniu projektu. Dlatego po otwarciu istniejącego rozwiązania z tego laboratorium trzeba będzie uruchomić te kroki.

      Aby uzyskać więcej informacji, zobacz ten artykuł: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Dodaj nową klasę języka C# do folderu Filtry i nadaj mu nazwę CustomActionFilter.cs. Ten folder będzie przechowywać wszystkie filtry niestandardowe.

  3. Otwórz CustomActionFilter.cs i dodaj odwołanie do przestrzeni nazw System.Web.Mvc i MvcMusicStore.Models :

    (Fragment kodu — ASP.NET filtry akcji niestandardowych MVC 4 — Ex1-CustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Dziedzicz klasę CustomActionFilter z klasy ActionFilterAttribute, a następnie utwórz klasę CustomActionFilter zaimplementuj interfejs IActionFilter.

    //...
    namespace MvcMusicStore.Filters
    {
        public class CustomActionFilter : ActionFilterAttribute, IActionFilter
        {
            //...
        }
    }
    
  5. Ustaw klasę CustomActionFilter na zastąpienie metody OnActionExecuting i dodaj logikę niezbędną do rejestrowania wykonywania filtru. W tym celu dodaj następujący wyróżniony kod w klasie CustomActionFilter .

    (Fragment kodu — ASP.NET filtry akcji niestandardowych MVC 4 — Ex1-LoggingActions)

    public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // TODO: Add your action filter's tasks here
    
            // Log Action Filter call
            using (MusicStoreEntities storeDb = new MusicStoreEntities())
            {
                ActionLog log = new ActionLog()
                {
                    Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                    Action = string.Concat(filterContext.ActionDescriptor.ActionName, " (Logged By: Custom Action Filter)"),
                    IP = filterContext.HttpContext.Request.UserHostAddress,
                    DateTime = filterContext.HttpContext.Timestamp
                };
                storeDb.ActionLogs.Add(log);
                storeDb.SaveChanges();
                OnActionExecuting(filterContext);
            }
        }
    }
    

    Uwaga

    Metoda OnActionExecuting używa programu Entity Framework do dodawania nowego rejestru ActionLog. Tworzy i wypełnia nowe wystąpienie jednostki informacjami kontekstowymi z filtrContext.

    Więcej informacji na temat klasy ControllerContext można uzyskać w witrynie msdn.

Zadanie 2 . Wstrzykiwanie przechwytnika kodu do klasy kontrolera magazynu

W tym zadaniu dodasz filtr niestandardowy, wstrzykiwając go do wszystkich klas kontrolerów i akcji kontrolera, które zostaną zarejestrowane. Na potrzeby tego ćwiczenia klasa Kontroler magazynu będzie miała dziennik.

Metoda OnActionExecuting z filtru niestandardowego ActionLogFilterAttribute jest uruchamiana po wywołaniu wprowadzonego elementu.

Istnieje również możliwość przechwycenia określonej metody kontrolera.

  1. Otwórz aplikację StoreController w folderze MvcMusicStore\Controllers i dodaj odwołanie do przestrzeni nazw Filtry :

    using System.Linq;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    using MvcMusicStore.Filters;
    
  2. Wstrzykiwanie niestandardowego filtru CustomActionFilter do klasy StoreController przez dodanie atrybutu [CustomActionFilter] przed deklaracją klasy.

    ...
    [CustomActionFilter]
    public class StoreController : Controller
    {
        ...
    }
    

    Uwaga

    Po wstrzyknięciu filtru do klasy kontrolera wszystkie jego akcje również są wstrzykiwane. Jeśli chcesz zastosować filtr tylko dla zestawu akcji, musisz wstrzyknąć [CustomActionFilter] do każdego z nich:

    [CustomActionFilter]
    public ActionResult Index()
    {
      ...
    }
    
    [CustomActionFilter]
    public ActionResult Browse(string genre)
    {
      ...
    }
    

Zadanie 3 — uruchamianie aplikacji

W tym zadaniu sprawdzisz, czy filtr rejestrowania działa. Uruchomisz aplikację i odwiedzisz sklep, a następnie sprawdzisz zarejestrowane działania.

  1. Naciśnij klawisz F5, aby uruchomić aplikację.

  2. Przejdź do /ActionLog, aby wyświetlić stan początkowy widoku dziennika:

    Zrzut ekranu przedstawia stan dziennika akcji przed działaniem strony.

    Stan monitora dzienników przed działaniem strony

    Uwaga

    Domyślnie zawsze będzie wyświetlany jeden element generowany podczas pobierania istniejących gatunków dla menu.

    Dla uproszczenia czyścimy tabelę ActionLog za każdym razem, gdy aplikacja jest uruchamiana, dzięki czemu będą wyświetlane tylko dzienniki weryfikacji poszczególnych zadań.

    Może być konieczne usunięcie następującego kodu z metody Session_Start (w klasie Global.asax ), aby zapisać dziennik historyczny dla wszystkich akcji wykonywanych w kontrolerze magazynu.

    // Clean up Logs Table
    MusicStoreEntities storeDB = new MusicStoreEntities();
    foreach (var log in 
    
    storeDB.ActionLogs.ToList())
    {
       storeDB.ActionLogs.Remove(log);
    }
    
    storeDB.SaveChanges();
    
  3. Kliknij jeden z gatunków z menu i wykonaj w nim kilka akcji, takich jak przeglądanie dostępnego albumu.

  4. Przejdź do /ActionLog i jeśli dziennik jest pusty, naciśnij F5 , aby odświeżyć stronę. Sprawdź, czy wizyty zostały śledzone:

    Zrzut ekranu przedstawia dziennik akcji, w którym można zweryfikować wizyty.

    Dziennik akcji z zarejestrowaną aktywnością

Ćwiczenie 2. Zarządzanie wieloma filtrami akcji

W tym ćwiczeniu dodasz drugi filtr akcji niestandardowej do klasy StoreController i zdefiniuj określoną kolejność, w której zostaną wykonane oba filtry. Następnie zaktualizujesz kod, aby zarejestrować filtr globalnie.

Podczas definiowania kolejności wykonywania filtrów należy wziąć pod uwagę różne opcje. Na przykład właściwość Order i zakres Filtrów:

Zakres dla każdego z filtrów można na przykład zdefiniować w zakresie wszystkich filtrów akcji do uruchomienia w zakresie kontrolera oraz wszystkich filtrów autoryzacji do uruchomienia w zakresie globalnym. Zakresy mają zdefiniowaną kolejność wykonywania.

Ponadto każdy filtr akcji ma właściwość Order, która służy do określania kolejności wykonywania w zakresie filtru.

Aby uzyskać więcej informacji na temat kolejności wykonywania filtrów akcji niestandardowych, odwiedź ten artykuł MSDN: (https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx).

Zadanie 1. Tworzenie nowego niestandardowego filtru akcji

W tym zadaniu utworzysz nowy filtr akcji niestandardowej w celu wstrzyknięcia do klasy StoreController, aby dowiedzieć się, jak zarządzać kolejnością wykonywania filtrów.

  1. Otwórz rozwiązanie Begin znajdujące się w folderze \Source\Ex02-ManagingMultipleActionFilters\Begin. W przeciwnym razie możesz kontynuować korzystanie z rozwiązania końcowego uzyskanego przez ukończenie poprzedniego ćwiczenia.

    1. Jeśli otwarto podane rozwiązanie Begin , przed kontynuowanie musisz pobrać brakujące pakiety NuGet. W tym celu kliknij menu Projekt i wybierz pozycję Zarządzaj pakietami NuGet.

    2. W oknie dialogowym Zarządzanie pakietami NuGet kliknij pozycję Przywróć, aby pobrać brakujące pakiety.

    3. Na koniec skompiluj rozwiązanie, klikając pozycję Kompiluj rozwiązanie kompilacji | .

      Uwaga

      Jedną z zalet korzystania z narzędzia NuGet jest to, że nie trzeba dostarczać wszystkich bibliotek w projekcie, zmniejszając rozmiar projektu. Za pomocą narzędzi NuGet Power Tools, określając wersje pakietów w pliku Packages.config, będzie można pobrać wszystkie wymagane biblioteki przy pierwszym uruchomieniu projektu. Dlatego po otwarciu istniejącego rozwiązania z tego laboratorium trzeba będzie uruchomić te kroki.

      Aby uzyskać więcej informacji, zobacz ten artykuł: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages.

  2. Dodaj nową klasę języka C# do folderu Filtry i nadaj mu nazwę MyNewCustomActionFilter.cs

  3. Otwórz MyNewCustomActionFilter.cs i dodaj odwołanie do przestrzeni nazw System.Web.Mvc i MvcMusicStore.Models :

    (Fragment kodu — ASP.NET filtrów akcji niestandardowych MVC 4 — Ex2-MyNewCustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. Zastąp domyślną deklarację klasy następującym kodem.

    (Fragment kodu — ASP.NET filtrów akcji niestandardowych MVC 4 — Ex2-MyNewCustomActionFilterClass)

    public class MyNewCustomActionFilter : ActionFilterAttribute, IActionFilter
    {
      void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
    
      {
            // TODO: Add your acction filter's tasks here
    
            // Log Action Filter Call
            MusicStoreEntities storeDB = new MusicStoreEntities();
    
            ActionLog log = new ActionLog()
            {
                 Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                 Action = filterContext.ActionDescriptor.ActionName + " (Logged By: 
    
    MyNewCustomActionFilter)",
                 IP = filterContext.HttpContext.Request.UserHostAddress,
                 DateTime = filterContext.HttpContext.Timestamp
            };
    
            storeDB.ActionLogs.Add(log);
            storeDB.SaveChanges();
    
            this.OnActionExecuting(filterContext);
      }
    }
    

    Uwaga

    Ten filtr akcji niestandardowej jest prawie taki sam jak filtr utworzony w poprzednim ćwiczeniu. Główną różnicą jest to, że ma atrybut "Logged By" zaktualizowany o nazwę tej nowej klasy w celu zidentyfikowania filtru zarejestrowanego w dzienniku.

Zadanie 2. Wstrzykiwanie nowego przechwytnika kodu do klasy StoreController

W tym zadaniu dodasz nowy filtr niestandardowy do klasy StoreController i uruchomisz rozwiązanie, aby sprawdzić, jak oba filtry współpracują ze sobą.

  1. Otwórz klasę StoreController znajdującą się w lokalizacji MvcMusicStore\Controllers i wstrzykuj nowy filtr niestandardowy MyNewCustomActionFilter do klasy StoreController , jak pokazano w poniższym kodzie.

    [MyNewCustomActionFilter]
    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Teraz uruchom aplikację, aby zobaczyć, jak działają te dwa filtry akcji niestandardowych. Aby to zrobić, naciśnij F5 i poczekaj na uruchomienie aplikacji.

  3. Przejdź do /ActionLog , aby wyświetlić stan początkowy widoku dziennika.

    Zrzut ekranu przedstawia stan monitora dziennika akcji w stanie początkowym.

    Stan monitora dzienników przed działaniem strony

  4. Kliknij jeden z gatunków z menu i wykonaj w nim kilka akcji, takich jak przeglądanie dostępnego albumu.

  5. Sprawdź, czy tym razem; Wizyty były śledzone dwa razy: raz dla każdego z filtrów akcji niestandardowych dodanych w klasie StorageController .

    Zrzut ekranu przedstawia dziennik akcji ze śledzonym dwukrotnie wizytami.

    Dziennik akcji z zarejestrowaną aktywnością

  6. Zamknij okno przeglądarki.

Zadanie 3. Zarządzanie kolejnością filtrów

W tym zadaniu dowiesz się, jak zarządzać kolejnością wykonywania filtrów przy użyciu właściwości Order.

  1. Otwórz klasę StoreController znajdującą się w folderze MvcMusicStore\Controllers i określ właściwość Order w obu filtrach, jak pokazano poniżej.

    [MyNewCustomActionFilter(Order = 2)]
    [CustomActionFilter(Order = 1)]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Teraz sprawdź, jak filtry są wykonywane w zależności od wartości właściwości Order. Okaże się, że filtr z najmniejszą wartością Order (CustomActionFilter) jest pierwszym, który jest wykonywany. Naciśnij F5 i poczekaj na uruchomienie aplikacji.

  3. Przejdź do /ActionLog , aby wyświetlić stan początkowy widoku dziennika.

    Zrzut ekranu przedstawiający dziennik akcji przed działaniem strony.

    Stan monitora dzienników przed działaniem strony

  4. Kliknij jeden z gatunków z menu i wykonaj w nim kilka akcji, takich jak przeglądanie dostępnego albumu.

  5. Sprawdź, czy tym razem wizyty zostały śledzone według wartości Order (Kolejność filtrów: CustomActionFilter ) najpierw.

    Zrzut ekranu przedstawia dziennik akcji z działaniem uporządkowanym przez CustomActionFilter.

    Dziennik akcji z zarejestrowaną aktywnością

  6. Teraz zaktualizujesz wartość kolejności filtrów i sprawdzisz, jak zmienia się kolejność rejestrowania. W klasie StoreController zaktualizuj wartość Order filtrów, jak pokazano poniżej.

    [MyNewCustomActionFilter(Order = 1)]
    [CustomActionFilter(Order = 2)]
    public class StoreController : Controller
    {
    ...
    }
    
  7. Ponownie uruchom aplikację, naciskając F5.

  8. Kliknij jeden z gatunków z menu i wykonaj w nim kilka akcji, takich jak przeglądanie dostępnego albumu.

  9. Sprawdź, czy tym razem dzienniki utworzone przez filtr MyNewCustomActionFilter są wyświetlane jako pierwsze.

    Zrzut ekranu przedstawia dziennik akcji z dziennikami utworzonymi najpierw przez określony filtr.

    Dziennik akcji z zarejestrowaną aktywnością

Zadanie 4. Rejestrowanie filtrów globalnie

W tym zadaniu zaktualizujesz rozwiązanie, aby zarejestrować nowy filtr (MyNewCustomActionFilter) jako filtr globalny. W ten sposób zostanie ona wyzwolona przez wszystkie akcje wykonywane w aplikacji, a nie tylko w przypadku kontrolek Sklepu, jak w poprzednim zadaniu.

  1. W klasie StoreController usuń atrybut [MyNewCustomActionFilter] i właściwość order [ CustomActionFilter]. Powinno to wyglądać tak:

    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Otwórz plik Global.asax i znajdź metodę Application_Start . Zwróć uwagę, że za każdym razem, gdy aplikacja uruchamia ją rejestruje filtry globalne, wywołując metodę RegisterGlobalFilters w klasie FilterConfig .

    Rejestrowanie filtrów globalnych w pliku Global.asax

    Rejestrowanie filtrów globalnych w pliku Global.asax

  3. Otwórz plik FilterConfig.cs w folderze App_Start .

  4. Dodaj odwołanie do metody System.Web.Mvc; przy użyciu mvcMusicStore.Filters; Namespace.

    using System.Web.Mvc;
    using MvcMusicStore.Filters;
    
  5. Zaktualizuj metodę RegisterGlobalFilters , dodając filtr niestandardowy. Aby to zrobić, dodaj wyróżniony kod:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyNewCustomActionFilter());
    }
    
  6. Uruchom aplikację, naciskając F5.

  7. Kliknij jeden z gatunków z menu i wykonaj w nim kilka akcji, takich jak przeglądanie dostępnego albumu.

  8. Sprawdź, czy teraz [MyNewCustomActionFilter] jest wstrzykiwany w homeController i ActionLogController zbyt.

    Zrzut ekranu przedstawia dziennik akcji, w którym można sprawdzić nowy filtr niestandardowy.

    Dziennik akcji z zarejestrowaną globalną aktywnością

Uwaga

Ponadto tę aplikację można wdrożyć w witrynach sieci Web platformy Windows Azure zgodnie z dodatkiem B: Publikowanie aplikacji ASP.NET MVC 4 przy użyciu narzędzia Web Deploy.


Podsumowanie

Wykonując to praktyczne laboratorium, wiesz już, jak rozszerzyć filtr akcji w celu wykonywania akcji niestandardowych. Przedstawiono również sposób wstrzykiwania dowolnego filtru do kontrolerów stron. Użyto następujących pojęć:

  • Jak utworzyć filtry akcji niestandardowej za pomocą klasy ASP.NET MVC ActionFilterAttribute
  • Jak wstrzyknąć filtry do kontrolerów ASP.NET MVC
  • Jak zarządzać kolejnością filtrów przy użyciu właściwości Order
  • Jak rejestrować filtry globalnie

Dodatek A: Instalowanie programu Visual Studio Express 2012 dla sieci Web

Program Microsoft Visual Studio Express 2012 dla sieci Web lub innej wersji "Express" można zainstalować przy użyciu Instalator platformy Microsoft Web. Poniższe instrukcje zawierają instrukcje wymagane do zainstalowania programu Visual Studio Express 2012 for Web przy użyciu Instalator platformy Microsoft Web.

  1. Przejdź do strony /iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169. Alternatywnie, jeśli masz już zainstalowany Instalator platformy internetowej, możesz go otworzyć i wyszukać produkt "Visual Studio Express 2012 for Web with Windows Azure SDK" (Program Visual Studio Express 2012 for Web with Windows Azure SDK).

  2. Kliknij pozycję Zainstaluj teraz. Jeśli nie masz Instalatora platformy internetowej, nastąpi przekierowanie do pobrania i zainstalowania go najpierw.

  3. Po otwarciu Instalatora platformy internetowej kliknij przycisk Zainstaluj , aby rozpocząć instalację.

    Instalowanie programu Visual Studio Express

    Instalowanie programu Visual Studio Express

  4. Przeczytaj wszystkie licencje i postanowienia dotyczące produktów, a następnie kliknij pozycję Akceptuję , aby kontynuować.

    Akceptowanie postanowień licencyjnych

    Akceptowanie postanowień licencyjnych

  5. Poczekaj na zakończenie procesu pobierania i instalacji.

    Postęp instalacji

    Postęp instalacji

  6. Po zakończeniu instalacji kliknij przycisk Zakończ.

    Ukończono instalację

    Ukończono instalację

  7. Kliknij przycisk Zakończ, aby zamknąć Instalatora platformy internetowej.

  8. Aby otworzyć program Visual Studio Express dla Sieci Web, przejdź do ekranu startowego i zacznij pisać "VS Express", a następnie kliknij kafelek VS Express for Web.

    Kafelek programu VS Express dla sieci Web

    Kafelek programu VS Express dla sieci Web

Dodatek B: publikowanie aplikacji MVC 4 ASP.NET przy użyciu narzędzia Web Deploy

W tym dodatku pokazano, jak utworzyć nową witrynę internetową z portalu zarządzania platformy Windows Azure i opublikować aplikację uzyskaną przez wykonanie laboratorium, korzystając z funkcji publikowania Web Deploy udostępnionej przez platformę Windows Azure.

Zadanie 1 . Tworzenie nowej witryny sieci Web w witrynie Windows Azure Portal

  1. Przejdź do portalu zarządzania platformy Windows Azure i zaloguj się przy użyciu poświadczeń firmy Microsoft skojarzonych z subskrypcją.

    Uwaga

    Platforma Windows Azure umożliwia hostowanie 10 ASP.NET witryn internetowych bezpłatnie, a następnie skalowanie w miarę wzrostu ruchu. Możesz zarejestrować się tutaj.

    Zaloguj się do witryny Azure Portal systemu Windows

    Zaloguj się do portalu zarządzania platformy Windows Azure

  2. Kliknij pozycję Nowy na pasku poleceń.

    Tworzenie nowej witryny sieci Web

    Tworzenie nowej witryny sieci Web

  3. Kliknij pozycję Compute Web Site (Obliczanie | witryny sieci Web). Następnie wybierz opcję Szybkie tworzenie . Podaj dostępny adres URL nowej witryny sieci Web i kliknij pozycję Utwórz witrynę sieci Web.

    Uwaga

    Witryna sieci Web platformy Windows Azure jest hostem aplikacji internetowej działającej w chmurze, którą można kontrolować i zarządzać. Opcja Szybkie tworzenie umożliwia wdrożenie ukończonej aplikacji internetowej w witrynie sieci Web platformy Windows Azure spoza portalu. Nie obejmuje on kroków konfigurowania bazy danych.

    Tworzenie nowej witryny sieci Web przy użyciu szybkiego tworzenia

    Tworzenie nowej witryny sieci Web przy użyciu szybkiego tworzenia

  4. Poczekaj na utworzenie nowej witryny sieci Web.

  5. Po utworzeniu witryny sieci Web kliknij link w kolumnie ADRES URL . Sprawdź, czy nowa witryna sieci Web działa.

    Przechodzenie do nowej witryny sieci Web

    Przechodzenie do nowej witryny sieci Web

    Uruchomiona witryna sieci Web

    Uruchomiona witryna sieci Web

  6. Wróć do portalu i kliknij nazwę witryny sieci Web w kolumnie Nazwa , aby wyświetlić strony zarządzania.

    Otwieranie stron zarządzania witrynami sieci Web

    Otwieranie stron zarządzania witrynami sieci Web

  7. Na stronie Pulpit nawigacyjny w sekcji Szybki przegląd kliknij link Pobierz profil publikowania.

    Uwaga

    Profil publikowania zawiera wszystkie informacje wymagane do opublikowania aplikacji internetowej w witrynie internetowej platformy Windows Azure dla każdej z włączonych metod publikacji. Profil publikowania zawiera adresy URL, poświadczenia użytkownika i ciągi bazy danych wymagane do nawiązania połączenia i uwierzytelnienia względem każdego z punktów końcowych, dla których włączono metodę publikacji. Microsoft WebMatrix 2, Microsoft Visual Studio Express for Web i Microsoft Visual Studio 2012 obsługują odczytywanie profilów publikowania w celu zautomatyzowania konfiguracji tych programów do publikowania aplikacji internetowych w witrynach internetowych platformy Windows Azure.

    Pobieranie profilu publikowania witryny internetowej

    Pobieranie profilu publikowania witryny sieci Web

  8. Pobierz plik profilu publikowania do znanej lokalizacji. W tym ćwiczeniu zobaczysz, jak używać tego pliku do publikowania aplikacji internetowej w witrynach sieci Web platformy Windows Azure z poziomu programu Visual Studio.

    Zapisywanie pliku profilu publikowania

    Zapisywanie pliku profilu publikowania

Zadanie 2 — Konfigurowanie serwera bazy danych

Jeśli aplikacja korzysta z baz danych programu SQL Server, musisz utworzyć serwer usługi SQL Database. Jeśli chcesz wdrożyć prostą aplikację, która nie korzysta z programu SQL Server, możesz pominąć to zadanie.

  1. Do przechowywania bazy danych aplikacji potrzebny będzie serwer usługi SQL Database. Serwery usługi SQL Database można wyświetlić z subskrypcji w portalu zarządzania Platformy Windows Azure na pulpicie nawigacyjnym serwera sql databases | | . Jeśli nie masz utworzonego serwera, możesz go utworzyć przy użyciu przycisku Dodaj na pasku poleceń. Zanotuj nazwę serwera i adres URL, nazwę logowania administratora i hasło, ponieważ będą one używane w następnych zadaniach. Nie twórz jeszcze bazy danych, ponieważ zostanie ona utworzona w późniejszym etapie.

    Pulpit nawigacyjny serwera usługi SQL Database

    Pulpit nawigacyjny serwera usługi SQL Database

  2. W następnym zadaniu przetestujesz połączenie z bazą danych z programu Visual Studio, dlatego musisz uwzględnić lokalny adres IP na liście dozwolonych adresów IP serwera. W tym celu kliknij przycisk Konfiguruj, wybierz adres IP z bieżącego adresu IP klienta i wklej go w polach tekstowychprzycisk add-client-ip-address-ok-button Początkowy adres IP i Końcowy adres IP, a następnie kliknij przycisk.

    Dodawanie adresu IP klienta

    Dodawanie adresu IP klienta

  3. Po dodaniu adresu IP klienta do listy dozwolonych adresów IP kliknij pozycję Zapisz, aby potwierdzić zmiany.

    Potwierdzanie zmian

    Potwierdzanie zmian

Zadanie 3 . Publikowanie aplikacji MVC 4 ASP.NET przy użyciu narzędzia Web Deploy

  1. Wróć do rozwiązania ASP.NET MVC 4. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt witryny internetowej i wybierz polecenie Publikuj.

    Publikowanie aplikacji

    Publikowanie witryny sieci Web

  2. Zaimportuj profil publikowania zapisany w pierwszym zadaniu.

    Importowanie profilu publikowania

    Importowanie profilu publikowania

  3. Kliknij pozycję Zweryfikuj połączenie. Po zakończeniu walidacji kliknij przycisk Dalej.

    Uwaga

    Walidacja zostanie ukończona po wyświetleniu zielonego znacznika wyboru obok przycisku Zweryfikuj połączenie.

    Weryfikowanie połączenia

    Weryfikowanie połączenia

  4. Na stronie Ustawienia w sekcji Bazy danych kliknij przycisk obok pola tekstowego połączenia bazy danych (tj. DefaultConnection).

    Konfiguracja narzędzia Web Deploy

    Konfiguracja narzędzia Web Deploy

  5. Skonfiguruj połączenie z bazą danych w następujący sposób:

    • W polu Nazwa serwera wpisz adres URL serwera usługi SQL Database przy użyciu prefiksu tcp: .

    • W polu Nazwa użytkownika wpisz nazwę logowania administratora serwera.

    • W polu Hasło wpisz hasło logowania administratora serwera.

    • Wpisz nową nazwę bazy danych.

      Konfigurowanie parametry połączenia docelowej

      Konfigurowanie parametry połączenia docelowej

  6. Następnie kliknij przycisk OK. Po wyświetleniu monitu o utworzenie bazy danych kliknij przycisk Tak.

    Tworzenie bazy danych

    Tworzenie bazy danych

  7. Parametry połączenia używany do nawiązywania połączenia z usługą SQL Database na platformie Windows Azure jest wyświetlany w polu tekstowym Domyślne połączenie. Następnie kliknij Dalej.

    Parametry połączenia wskazujące usługę SQL Database

    Parametry połączenia wskazujące usługę SQL Database

  8. Na stronie Wersja zapoznawcza kliknij pozycję Publikuj.

    Publikowanie aplikacji internetowej

    Publikowanie aplikacji internetowej

  9. Po zakończeniu procesu publikowania domyślna przeglądarka otworzy opublikowaną witrynę internetową.

Dodatek C: Używanie fragmentów kodu

W przypadku fragmentów kodu masz cały potrzebny kod na wyciągnięcie ręki. Dokument laboratorium zawiera informacje o tym, kiedy można ich używać, jak pokazano na poniższej ilustracji.

Wstawianie kodu do projektu przy użyciu fragmentów kodu programu Visual Studio Code

Wstawianie kodu do projektu przy użyciu fragmentów kodu programu Visual Studio Code

Aby dodać fragment kodu przy użyciu klawiatury (tylko w języku C#)

  1. Umieść kursor, w którym chcesz wstawić kod.
  2. Zacznij wpisywać nazwę fragmentu kodu (bez spacji lub łączników).
  3. Zobacz, jak funkcja IntelliSense wyświetla pasujące nazwy fragmentów kodu.
  4. Wybierz poprawny fragment kodu (lub kontynuuj wpisywanie do momentu wybrania nazwy całego fragmentu kodu).
  5. Naciśnij dwukrotnie Tab, aby wstawić fragment kodu w lokalizacji kursora.

Zacznij wpisywać nazwę fragmentu kodu

Zacznij wpisywać nazwę fragmentu kodu

Naciśnij Tab, aby wybrać wyróżniony fragment kodu

Naciśnij Tab, aby wybrać wyróżniony fragment kodu

Ponownie naciśnij Tab, a fragment kodu zostanie rozwiń

Ponownie naciśnij Tab, a fragment kodu zostanie rozwiń

Aby dodać fragment kodu przy użyciu myszy (C#, Visual Basic i XML) 1. Kliknij prawym przyciskiem myszy miejsce, w którym chcesz wstawić fragment kodu.

  1. Wybierz pozycję Wstaw fragment kodu , a następnie pozycję Moje fragmenty kodu.
  2. Wybierz odpowiedni fragment kodu z listy, klikając go.

Kliknij prawym przyciskiem myszy miejsce, w którym chcesz wstawić fragment kodu, a następnie wybierz polecenie Wstaw fragment kodu

Kliknij prawym przyciskiem myszy miejsce, w którym chcesz wstawić fragment kodu, a następnie wybierz polecenie Wstaw fragment kodu

Wybierz odpowiedni fragment kodu z listy, klikając go

Wybierz odpowiedni fragment kodu z listy, klikając go