미들웨어는 웹 API 호출을 중단합니다.

Renakre

웹 API 요청을 기록하는 미들웨어가 있습니다. 아래는 Configuration내부 방법 Startup.cs입니다. 경우 app.UseMiddleware앞에 오는 app.UseMvc경우, 그러나 호출받을 웹 API를 호출 없음 app.UseMiddleware후 제공 app.UseMvc, 미들웨어 아무것도 (즉, 기록 요청)를하지 않습니다.

아래 코드를 제공했습니다. app.UseMiddleware방해하는 이유 asp.UseMvc있습니까?

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider services)
{
    // global cors policy
    app.UseCors(x => x
        .AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader());


    app.UseHttpsRedirection();
    app.UseAuthentication();

    app.UseStaticFiles();
    app.UseSpaStaticFiles();

    app.UseMiddleware<ApiLoggingMiddleware>();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller}/{action=Index}/{id?}");
    });
}

다음은 미들웨어입니다.

 public async Task Invoke(HttpContext httpContext, IApiLogService apiLogService)
 {
     try
     {
         _apiLogService = apiLogService;

         var request = httpContext.Request;
         if (request.Path.StartsWithSegments(new PathString("/api")))
         {
             var stopWatch = Stopwatch.StartNew();
             var requestTime = DateTime.UtcNow;
             var requestBodyContent = await ReadRequestBody(request);
             var originalBodyStream = httpContext.Response.Body;

             await SafeLog(requestTime,
                   stopWatch.ElapsedMilliseconds,
                   200,//response.StatusCode,
                   request.Method,
                   request.Path,
                   request.QueryString.ToString(),
                   requestBodyContent
                   );           
         }
         else
         {
             await _next(httpContext);
         }
     }
     catch (Exception ex)
     {
         await _next(httpContext);
     }
 }
Marmellad

항상 await _next(httpContext);미들웨어를 호출해야합니다. 그렇지 않으면 요청이 파이프 라인으로 이동하지 않습니다.

public async Task Invoke(HttpContext httpContext, IApiLogService apiLogService)
 {
     try
     {
         _apiLogService = apiLogService;

         var request = httpContext.Request;
         if (request.Path.StartsWithSegments(new PathString("/api")))
         {
             var stopWatch = Stopwatch.StartNew();
             var requestTime = DateTime.UtcNow;
             var requestBodyContent = await ReadRequestBody(request);
             var originalBodyStream = httpContext.Response.Body;

             await SafeLog(requestTime,
                   stopWatch.ElapsedMilliseconds,
                   200,//response.StatusCode,
                   request.Method,
                   request.Path,
                   request.QueryString.ToString(),
                   requestBodyContent
                   );           
         };
     }
     catch (Exception ex)
     {

     }
     await _next(httpContext);
 }

편집 (미들웨어에 대한 간단한 설명) :
전체 미들웨어는 다음과 같은 방식으로 작동합니다.-요청이 애플리케이션에 오면 미들웨어 파이프 라인을 거치며, 여기서 각 미들웨어는 최종적으로 컨트롤러에 요청을 받기 위해 다음 미들웨어를 호출해야합니다. 호출 await _next(httpContext);기본적으로 파이프 라인에서 다음 미들웨어의 Invoke 메서드를 호출합니다. 전화하지 않으면 await _next(httpContext);요청이 중지되고 컨트롤러에 전달 되지 않습니다 . 주의해야 할 점 await _next(httpContext);은 반환 될 때 컨트롤러가 요청을 이미 처리 했다는 것 입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

미들웨어는 웹 API 호출을 중단합니다.

분류에서Dev

웹 API는 JSON 호출에서 XML을 반환합니다.

분류에서Dev

두 번째 웹 서비스 호출이 먼저 중단되어야합니다.

분류에서Dev

다른 웹 API에서 웹 API 호출

분류에서Dev

다른 웹 API에서 웹 API 호출

분류에서Dev

.NET 웹 API 호출이 각도 js UI 라우터에 의해 가로 채어 API를 호출하는 대신 HTML을 반환합니다.

분류에서Dev

Flask에서 외부 중단 API 호출을 어떻게 스레드합니까?

분류에서Dev

.net 코어 웹 API jwtbearer 미들웨어가 인증 공급자를 사용하여 OpenID Connect 토큰을 확인하는 방법

분류에서Dev

다른 웹 API를 호출 할 때 웹 API로 라우팅하는 방법

분류에서Dev

장고 채널 미들웨어는 ORM을 사용합니다.

분류에서Dev

문자열 API로 시작하는 모든 호출을 익스프레스 미들웨어의 핸들러로 라우팅하려면 어떻게해야합니까?

분류에서Dev

Android 애플리케이션에서 Azure 웹 API에 대한 호출이 응답을 기다리는 동안 영원히 중단됨

분류에서Dev

dotnet core api에서 컨트롤러 메서드를 호출 할 수 없음 : 요청을 처리 할 미들웨어가 없습니다.

분류에서Dev

웹 페이지로드 시간을 단축하는 방법 (CRON? 백그라운드에서 API 호출로드?)

분류에서Dev

웹 API는 외래 키 대신 특정 속성을 노출합니다.

분류에서Dev

웹 API는 외래 키 대신 특정 속성을 노출합니다.

분류에서Dev

Angular는 API 호출을 줄입니다.

분류에서Dev

라 라벨 미들웨어의 handle () 메서드는 다른 미들웨어에서 'Clousre $ next'를 사용하여 어떻게 호출됩니까?

분류에서Dev

웹 미들웨어에서 laravel 5.3의 API 미들웨어로 세션에 액세스

분류에서Dev

asynctask가없는 Android 웹 API 호출

분류에서Dev

Postman과 Browser는 내 미들웨어와 다른 동작을합니다.

분류에서Dev

Microsoft Web API 끝점을 통해 웹 서비스 (asmx)를 호출합니까?

분류에서Dev

opencpu는 웹 서비스에서 호출하는 API로 유용합니까?

분류에서Dev

웹 API는 단일 비동기 작업 만 허용합니다.

분류에서Dev

Asp.Net 웹 API Ajax 호출 404 메서드를 찾을 수 없습니다.

분류에서Dev

Asp.Net 웹 API Ajax 호출 404 메서드를 찾을 수 없습니다.

분류에서Dev

Angular, restangular-더 많은 현재 호출이 들어 오면 검색 호출을 중단합니다.

분류에서Dev

router.use 미들웨어가 호출되지 않습니다.

분류에서Dev

SSL을 통한 WPF의 웹 API 호출

Related 관련 기사

  1. 1

    미들웨어는 웹 API 호출을 중단합니다.

  2. 2

    웹 API는 JSON 호출에서 XML을 반환합니다.

  3. 3

    두 번째 웹 서비스 호출이 먼저 중단되어야합니다.

  4. 4

    다른 웹 API에서 웹 API 호출

  5. 5

    다른 웹 API에서 웹 API 호출

  6. 6

    .NET 웹 API 호출이 각도 js UI 라우터에 의해 가로 채어 API를 호출하는 대신 HTML을 반환합니다.

  7. 7

    Flask에서 외부 중단 API 호출을 어떻게 스레드합니까?

  8. 8

    .net 코어 웹 API jwtbearer 미들웨어가 인증 공급자를 사용하여 OpenID Connect 토큰을 확인하는 방법

  9. 9

    다른 웹 API를 호출 할 때 웹 API로 라우팅하는 방법

  10. 10

    장고 채널 미들웨어는 ORM을 사용합니다.

  11. 11

    문자열 API로 시작하는 모든 호출을 익스프레스 미들웨어의 핸들러로 라우팅하려면 어떻게해야합니까?

  12. 12

    Android 애플리케이션에서 Azure 웹 API에 대한 호출이 응답을 기다리는 동안 영원히 중단됨

  13. 13

    dotnet core api에서 컨트롤러 메서드를 호출 할 수 없음 : 요청을 처리 할 미들웨어가 없습니다.

  14. 14

    웹 페이지로드 시간을 단축하는 방법 (CRON? 백그라운드에서 API 호출로드?)

  15. 15

    웹 API는 외래 키 대신 특정 속성을 노출합니다.

  16. 16

    웹 API는 외래 키 대신 특정 속성을 노출합니다.

  17. 17

    Angular는 API 호출을 줄입니다.

  18. 18

    라 라벨 미들웨어의 handle () 메서드는 다른 미들웨어에서 'Clousre $ next'를 사용하여 어떻게 호출됩니까?

  19. 19

    웹 미들웨어에서 laravel 5.3의 API 미들웨어로 세션에 액세스

  20. 20

    asynctask가없는 Android 웹 API 호출

  21. 21

    Postman과 Browser는 내 미들웨어와 다른 동작을합니다.

  22. 22

    Microsoft Web API 끝점을 통해 웹 서비스 (asmx)를 호출합니까?

  23. 23

    opencpu는 웹 서비스에서 호출하는 API로 유용합니까?

  24. 24

    웹 API는 단일 비동기 작업 만 허용합니다.

  25. 25

    Asp.Net 웹 API Ajax 호출 404 메서드를 찾을 수 없습니다.

  26. 26

    Asp.Net 웹 API Ajax 호출 404 메서드를 찾을 수 없습니다.

  27. 27

    Angular, restangular-더 많은 현재 호출이 들어 오면 검색 호출을 중단합니다.

  28. 28

    router.use 미들웨어가 호출되지 않습니다.

  29. 29

    SSL을 통한 WPF의 웹 API 호출

뜨겁다태그

보관