gpt4 book ai didi

asp.net - System.Web.HttpRequest - ContentLength、TotalBytes 和 InputStream.Length 之间有什么区别?

转载 作者:行者123 更新时间:2023-12-01 04:19:26 25 4
gpt4 key购买 nike

我正在寻找以下问题的答案:

  • 对于任何给定的请求,这三个属性是否总是返回相同的值?
  • 它们中的任何一个有副作用吗?
  • 在 IIS 收到整个请求之前,它们中的任何一个都会阻塞吗?
  • 它们中的任何一个会导致上传的文件完全加载到内存中吗?

  • 我关心这一点,因为当请求在服务器上处理时间过长时,我让我的 Web 应用程序向我发送电子邮件,并且我想避免为大型请求发送这封电子邮件,即当用户上传一个或多个大文件时。

    最佳答案

    根据 MSDN:

    ContentLength - 指定客户端发送的内容的长度(以字节为单位)。
    TotalBytes - 当前输入流中的字节数。
    InputStream.Length - 输入流中的字节长度。

    所以最后两个是一样的。以下是 Reflector 关于 ContentLength 属性的说明:

    public int ContentLength
    {
    get
    {
    if ((this._contentLength == -1) && (this._wr != null))
    {
    string knownRequestHeader = this._wr.GetKnownRequestHeader(11);
    if (knownRequestHeader != null)
    {
    try
    {
    this._contentLength = int.Parse(knownRequestHeader, CultureInfo.InvariantCulture);
    }
    catch
    {
    }
    }
    else if (this._wr.IsEntireEntityBodyIsPreloaded())
    {
    byte[] preloadedEntityBody = this._wr.GetPreloadedEntityBody();
    if (preloadedEntityBody != null)
    {
    this._contentLength = preloadedEntityBody.Length;
    }
    }
    }
    if (this._contentLength < 0)
    {
    return 0;
    }
    return this._contentLength;
    }
    }

    关于asp.net - System.Web.HttpRequest - ContentLength、TotalBytes 和 InputStream.Length 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428759/

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