c# - .NET Core 中的 RequestContext 等效项
问题描述
我是 .NET Core 的新手,我们从中间件发出客户端请求,我想知道从 .NET Core 中提取和设置它的正确方法httprequestcontext
是httpcontext
什么HttpRequestMessage
。
.NET Framework 有一种setrequestcontext()
设置请求上下文的方法HttpRequestMessage
,我在 .NET Core 中看不到类似的方法。
任何帮助,将不胜感激。
中间件:
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
await next.Invoke(context).ConfigureAwait(false);
// create a HTTPMessageRequest from context.
HttpRequestMessage httpRequestMessage = context.CreateHttpRequestMessage();
// make a remote call.
}
public static HttpRequestMessage CreateHttpRequestMessage(this HttpContext context)
{
_ = context ?? throw new ArgumentNullException(nameof(context));
var request = context.Request;
var requestMessage = new HttpRequestMessage();
var requestMethod = request.Method;
if (!HttpMethods.IsGet(requestMethod) &&
!HttpMethods.IsHead(requestMethod) &&
!HttpMethods.IsDelete(requestMethod) &&
!HttpMethods.IsTrace(requestMethod))
{
var streamContent = new StreamContent(request.Body);
requestMessage.Content = streamContent;
}
requestMessage.RequestUri = new Uri(context.Request.GetDisplayUrl());
// Copy the request headers
foreach (var header in request.Headers)
{
if (!requestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()) && requestMessage.Content != null)
{
requestMessage.Content?.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray());
}
}
requestMessage.Method = new HttpMethod(request.Method);
return requestMessage;
}
解决方案
推荐阅读
- angular - 将 2 角度项目开发到子文件夹中
- javascript - Frequency Counter in array of objects for certain key
- image - 如何将图像缩小到 1MB?
- javascript - 10秒后服务器响应时如何使用ajax发送请求?
- ios - 我在使用登录视图的 if/else 语句更改 SwiftUI 中的视图时遇到问题
- c - 如何在具有功能代码 2 的 Modbus RTU 中计算预期字节数
- git - 如何使用 git 对不同的 repos 应用相同的更改集?
- mysql - 如何获得最后一行?
- linux - 如何在 linux 中获取组的 GID?
- powershell - 通过 tfs buildagent 启动时,bitsadmin 无法正常工作