gpt4 book ai didi

c# - 这是获取 HttpContext 请求正文的安全方法吗

转载 作者:可可西里 更新时间:2023-11-01 09:11:54 29 4
gpt4 key购买 nike

public static class HttpRequestHelper
{
public static string RequestBody()
{
var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
var bodyText = bodyStream.ReadToEnd();
return bodyText;
}
}

我计划从 ActionFilters 调用它来记录传入的请求。当然可能有多个同时请求。

这个方法可以吗?

最佳答案

您的问题是从并发的角度还是从一般的 ASP.NET Web API 的角度提出的?每个请求都有自己的上下文,您可以同时进行多个请求。但这里有两件事供您查看。

(1) 由于您使用的是 HttpContext,因此您将自己锁定在网络托管 (IIS) 上,这在许多情况下应该没问题。但我希望您能意识到这一点。

(2) 如您所述,您的代码 HttpRequestHelper.RequestBody() 将在从操作过滤器调用时起作用。但是,如果您尝试从其他地方调用它,比如消息处理程序,这将不起作用。当我说这行不通时,将请求主体绑定(bind)到操作方法参数的参数绑定(bind)将行不通。完成后,您将需要从头开始寻找。它在 Action 过滤器中起作用的原因是绑定(bind)在 Action 过滤器在管道中运行时已经发生。这是您可能需要注意的另一件事。

关于c# - 这是获取 HttpContext 请求正文的安全方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624525/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com