我想要实现的目标 - 我的应用程序只是ASP .Net Core应用程序。 它不是Web API。我想在从我的应用程序发送/获取请求到外部源之前执行方法,例如: 我发送一个帖子请求,检查一些网站API的SSL到期日期,它返回给我一个回复。根据回复,我发送了另一个请求。我不希望在每个请求之前发出call方法声明,我想在全球范围内进行。
我试图根据http://www.sulhome.com/blog/10/log-asp-net-core-request-and-response-using-middleware
来实现这一目标当它发生时,这个中间件只能用于内部请求(应用程序内部的路由请求)(我有它工作)。
是否有可能为所有请求执行此操作?
提前致谢
答案 0 :(得分:2)
.NET Core允许创建自定义中间件以进入MV管道。这是一个例子:
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);
}
}
在Config方法的Startup.cs中,只需重新启动它:
app.UseMiddleware<MyMiddleware>(Options.Create(options));
答案 1 :(得分:0)
由于您正在谈论对传出请求进行调用,因此您有两种机制来解决问题:
对于第二点,一个好的机制是基类提供了一个SendRequest
方法,它接收HttpRequestMessage
并执行全局代码。从中继承的类使用此方法发送请求,并且无法访问基础HttpClient
(因此它们无法围绕SendRequest
方法运行)。