gpt4 book ai didi

c# - 什么配置控制 "HttpBufferlessInputStream.DisableMaxRequestLength"

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:48 24 4
gpt4 key购买 nike

在 ASP.NET 中工作,我有一个 api 调用,我希望能够将任意大的有效负载流式传输到该调用。我遇到了最大请求长度的问题。深入挖掘,我看到了这个堆栈:

at System.Web.HttpBufferlessInputStream.ValidateRequestEntityLength()
at System.Web.HttpBufferlessInputStream.EndRead(IAsyncResult asyncResult)
at System.Net.Http.StreamToStreamCopy.StartRead()

查看the source for ValidateRequestEntityLength显示以下代码:

private void ValidateRequestEntityLength() {
if (!_disableMaxRequestLength && Length > _maxRequestLength) {
if ( !(_context.WorkerRequest is IIS7WorkerRequest) ) {
_context.Response.CloseConnectionAfterError();
}
throw new HttpException(SR.GetString(SR.Max_request_length_exceeded), null, WebEventCodes.RuntimeErrorPostTooLarge);
}
}

其中 _disableMaxRequestLength 是传递给此类构造函数的 bool 值。我没有看到在我可用的堆栈中的任何地方构造此类,所以我想知道:

  • 一般来说,我怎样才能从这里继续向后工作以找出它是如何配置的?
  • 具体来说,什么配置控制这个 disableMaxRequestLength bool 值?

我查看了为这些请求提供服务的应用程序池中的 web.config,但我没有看到任何似乎在起作用的与“请求”或“长度”相关的设置.

我还看哪里?还有哪些其他信息与回答此问题相关?

最佳答案

如果您改为搜索 referencesource.microsoft.com ,您可以单击源中的方法名称,所有调用点将显示在左侧列表中。从那里您可以向后导航,以查看它是如何被调用的。当我想了解源代码时,我经常使用这种方法。 Github 源也很棒,但是仅通过单击它们的名称来导航方法​​、类甚至变量的能力是首屈一指的。

更具体地说,它是一个可选参数,可以看出here ,默认为 false

它从三个地方被调用,其中一个显式传递参数为 truetraces to here其中有几行关于 Request.ReadEntityBodyMode 和缓冲/无缓冲/经典模式的评论。它也通过了 HttpRequestWrapper 的抽象。

关于c# - 什么配置控制 "HttpBufferlessInputStream.DisableMaxRequestLength",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40642918/

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