2017-03-21 4 views
2

달성하려는 내용 - 내 응용 프로그램은 단순히 ASP .Net Core 응용 프로그램입니다. 웹 API가 아닙니다. 내 앱에서 외부 소스에 대한 모든 게시물/요청 요청 전에 메소드를 실행하려고합니다 (예 : ) SSL 유효 기간을 일부 웹 사이트 API에 확인하기위한 게시물 요청을 보내고 응답을 반환합니다. 응답에 따라 다른 요청을 보내거나 보내지 않습니다. 매 요청 전에 call 메소드 선언문을 배치하고 싶지는 않습니다. 전 세계적으로하고 싶습니다. 모든 POST/GET 요청 전에 메서드/동작 실행 .NET 코어

나는이 http://www.sulhome.com/blog/10/log-asp-net-core-request-and-response-using-middleware

을 기반으로 달성하기 위해 노력했다가 발생할 때, 단지 내부 요청이 미들웨어 작품 (내가 작동이) (응용 프로그램 내부 라우팅 요청).

모든 요청에 ​​대해이를 수행 할 가능성이 있습니까?

미리 감사드립니다.

답변

2

.NET 코어는 MV 파이프 라인에 들어가기 위해 맞춤형 미들웨어를 만들 수 있습니다.

app.UseMiddleware<MyMiddleware>(Options.Create(options)); 
+0

나는 당신이 말한대로 모든 것을 해냈지만 요청이 ** ** 내 응용 프로그램 **에서 ** 내 응용 프로그램으로가는 경우에만이 Task Invoke를 친다. 달성하고자하는 것은 Invoke()가 다음과 같은 상황에서 실행된다는 것입니다. 내 컨트롤러에서 '다음 방법으로'작업을 수행 한 후 요청이 외부 웹 사이트로 전송됩니다. 그리고이 요청을 보내기 전에 Invoke()를 실행하고 싶습니다. 그래서 1. 내 앱으로 요청을 게시하십시오. 2. 컨트롤러 및 다른 클래스에서 몇 가지 메서드가 실행됩니다. 3.Invoke()가 실행되었습니다.이 작업에서 SSL 확인과 함께 요청이 전송됩니다. 4. 응답에 대한 응답 다른 작업이 실행되었습니다. – Intern321

+0

미들웨어를 추가해야 할 수도 있습니다. 구성에서 파이프 라인의 끝? – miechooy

+0

내 이해에서 (그리고 내가 틀렸다면 나에게 올바른) 그는 들어오는 요청이 아니라 나가는 요청을 포착하려고합니다. –

0

당신이 보내는 요청에 전화를하고 얘기하고 있기 때문에, 당신은 문제를 해결하기 위해 두 가지 메커니즘이 있습니다

구성 방법에 Startup.cs에서
public class MyMiddleware 
    { 
     private readonly RequestDelegate _next; 


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

     public async Task Invoke(HttpContext context) 
     { 
      //do your checkings 
      await _next(context); 
     } 
} 

단지 그것을 regiester 예를 들면 : :

  1. 는이 작은 방울을 가지고 (자신의 요구를 구현 스펙트 (Aspect) 지향 프로그래밍 라이브러리 (같은 https://www.postsharp.net)
  2. 를 사용하여 모든 동작이이 클래스 (또는 클래스로부터 상속받은 클래스)를 사용하여 완료되었는지 확인하십시오. 두 번째 포인트에 대한

이 좋은기구 기본 클래스는 HttpRequestMessage를 수신하고, 글로벌 코드를 실행하는 SendRequest 방법을 제공한다는 것이다. 클래스를 상속 한 클래스는이 메서드를 사용하여 요청을 보내고 기본 HttpClient에 액세스 할 수 없으므로 (따라서 SendRequest 메서드를 실행할 수 없습니다).

관련 문제