15

Я пытаюсь зарегистрировать фильтр в простом приложении mvc. Я даже не написал ничего еще за пределами основного фильтра для тестирования. Я использую VS 2015 RC, и я создал начальное приложение, перейдя в новый проект -> Web-приложение Asp.net -> Web API. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ зарегистрировать фильтр по всему миру.Как зарегистрировать глобальный фильтр с mvc 6, asp.net 5

Из более ранних версий MVC я вижу GlobalFilters.Filters, но когда я пытаюсь использовать его в новой структуре, он говорит мне, что GlobalFilters не может быть найден. В предыдущих версиях он жил в System.Web.MVC, но я больше не вижу этого в своих ссылках, и я не могу найти его нигде.

Кажется, что это должно быть очень просто, но пока я не нашел способ сделать это.

Вот мой 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

В папке App_Data обычно есть класс FilterConfig; это то, что вам нужно? –

+0

Ну фильтр FilterConfig использует фильтры GlobalFilters.Filters, но я не могу заставить GlobalFilters начинать с – Zipper

+0

. Вы пытаетесь регистрировать фильтры только через файл project.json? Кроме того, вы отметили этот MVC5, но ваш файл конфигурации, как показано, показывает, что вы используете MVC6; это верно? –

ответ

8

Пример того, как вы можете это сделать в MVC 6

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

Этот ответ больше не действительный, см. ответ Ли Джонса (http://stackoverflow.com/a/33768705/11220) – noocyte

31

С Beta 8 это делается сейчас через AddMvc следующим образом:

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

Спасибо за ответ! Можно ли применять фильтр только для определенной области mvc? (Я хочу, чтобы мой бэкэнд был закрыт для анонимных пользователей, но не интерфейс.) Спасибо! –

Смежные вопросы