2016-12-14 5 views
0

macOS에서 asp.net 핵심 웹 API를 만들려고합니다.ASP.NET 코어 - MVC의 미들웨어

그러나 내 미들웨어는 mvc-call에서 호출되지 않습니다.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, BackendDbContext context) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     //app.UseStaticFiles(); 

     app.UseMvc(); 
     app.UseMiddleware<AuthMiddleware>(); 

     BackendDbInitializer.Init(context); 
    } 

그리고 내 미들웨어 :

내 구성

public class AuthMiddleware 
{ 
    private readonly RequestDelegate _next; 

    public AuthMiddleware(RequestDelegate next) 
    { 
     _next = next; 
    } 

    public async Task Invoke(HttpContext context) 
    { 
     Console.WriteLine("Invoke......................"); 

     await _next.Invoke(context); 
    } 
} 

내가 컨트롤러 요청과 일치하지 않는 HTTP 요청을 할

. 미들웨어 클래스가 호출됩니다.

어떻게하면 mvc-request에서만 미들웨어 클래스가 호출되도록 설정할 수 있습니까?

답변

1

당신은 MVC 필터로 미들웨어를 사용할 수 있습니다

이 경우
public class HomeController : Controller 
{ 
    [MiddlewareFilter(typeof(AuthMiddleware))] 
    public IActionResult Index() 
    { 
     return View(); 
    } 
} 

, AuthMiddleware는 액션 메소드 Index가 호출 될 때마다 실행됩니다.

PS :이 패키지 (Microsoft.AspNetCore.Mvc.Core)

more info를 설치해야

+0

나는 내가 당신의 방법은 컨트롤러 내부에 생각 MVS 정말 새로운 오전 (MVC는 필터 섹션으로 미들웨어 참조)? 하지만 각 메서드마다 주석을 추가하고 싶기 때문에 각 메서드에 주석을 추가하고 싶지 않습니다. – Flo

+0

@Flo 답변을 업데이트했습니다. 컨트롤러에이 필터를 적용 할 수도 있습니다. –

+0

좋아, 나는 미들웨어를 인증으로 사용할 것이다. 그리고 저는 모든 나머지 컨트롤러와 모든 방법에 대해 호출하고 싶습니다. 글로벌로 구성 할 수 있습니까? – Flo