15

Próbuję zarejestrować filtr w prostej aplikacji mvc. Nie napisałem jeszcze nic poza podstawowym filtrem, żeby go przetestować. Używam VS 2015 RC i stworzyłem początkową aplikację, przechodząc do nowego projektu -> Asp.net Web Application -> Web API. Problem, który mam, polega na tym, że nie mogę znaleźć sposobu globalnego zarejestrowania filtru.Jak zarejestrować filtr globalny za pomocą mvc 6, asp.net 5

Z wcześniejszych wersji MVC widzę GlobalFilters.Filters, ale kiedy próbuję użyć tego w nowym frameworku mówi mi, że nie można znaleźć GlobalFilters. W poprzednich wersjach żył w System.Web.MVC, ale nie widzę tego w moich odniesieniach i nie mogę go nigdzie znaleźć.

Wygląda na to, że powinno być bardzo proste, ale do tej pory nie znalazłem sposobu, aby to zrobić.

Oto mój project.json

{ 
    "webroot": "wwwroot", 
    "version": "1.0.0-*", 

    "dependencies": { 
    "Microsoft.AspNet.Mvc": "6.0.0-beta4", 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta4", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta4" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000" 
    }, 

    "frameworks": { 
    "dnx451": { 
     "frameworkAssemblies": { 
     } 
    }, 
    "dnxcore50": { } 
    }, 

    "exclude": [ 
    "wwwroot", 
    "node_modules", 
    "bower_components" 
    ], 
    "publishExclude": [ 
    "node_modules", 
    "bower_components", 
    "**.xproj", 
    "**.user", 
    "**.vspscc" 
    ] 
} 
+1

Zwykle istnieje klasa FilterConfig w folderze App_Data; czy tego właśnie szukasz? –

+0

Filtr FilterConfig pobiera filtry GlobalFilters.Filters, ale nie mogę uruchomić filtrów GlobalFilters od – Zipper

+0

Czy próbujesz zarejestrować filtry wyłącznie za pośrednictwem pliku project.json? Ponadto oznaczono to MVC5, ale to, co pokazany plik konfiguracyjny wskazuje, że używasz MVC6; czy to jest poprawne? –

Odpowiedz

8

Przykład tego, jak można to zrobić w MVC 6

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc(); 
    services.ConfigureMvc(options => 
    { 
     options.Filters.Add(new YouGlobalActionFilter()); 
    } 
} 
+6

Ta odpowiedź nie jest już aktualna, patrz odpowiedź Lee Jones'a (http://stackoverflow.com/a/33768705/11220) – noocyte

31

beta 8 jest obecnie odbywa się poprzez AddMvc następująco:

services.AddMvc(options => 
{ 
    options.Filters.Add(new YouGlobalActionFilter()); 
}); 
+0

Dzięki za odpowiedź! Czy możliwe jest zastosowanie filtru tylko dla określonego obszaru mvc? (Chcę, aby mój backend był zamknięty dla anonimowych użytkowników, ale nie dla frontendu.) Dzięki! –

Powiązane problemy