我需要从客户端和MVC通过请求全局传递来自MVC和UI的任何Web API调用的信息 .
我使用HttpClient进行WebApi调用 .
我使用MVC中的中间件来拦截Web API调用,在Request中添加一些自定义头文件,如下所示 . 以下是我的示例代码 .
public async Task Invoke(HttpContext context)
{
context.Request.Headers.Add("AuditInfo", "xxxxxxxxxx");
await next.Invoke(context);
}
当我从WebApi检查请求标头时,我无法看到我在中间件中添加的标头 .
注意:如果我在创建HttpClient时添加 Headers ,我可以成功添加 Headers 并从WebApi Request查看它,如下所示 . 但我想为从MVC和UI制作的Web API请求全局添加此功能 .
代码添加 Headers 并调用API:
HttpClient客户端=新的HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application / json”));
client.DefaultRequestHeaders.Add(“AuditInfo”,“xxxxxxxxxx”);
client.BaseAddress = new Uri(“http://localhost:62239/”);
HttpResponseMessage响应= client.GetAsync(“api / test /”) . 结果;
if(response.IsSuccessStatusCode)string jsonResponse = response.Content.ReadAsStringAsync() . Result;
1 回答
如果我理解正确,你想在mvc应用程序中使用中间件来处理
HttpClient
. 中间件用于处理传入请求,而不是传出请求 . 由于HttpClient
请求是传出请求,因此您无法使用中间件来处理它 .您可以为此创建一个
HttpClient
工厂类:然后,只要您需要获取并使用它: