青雨沐雨
2020-03-13 11:30
采纳率: 0%
浏览 371

C# HttpWebRequest上传文件开始时会出现卡顿,400KB左右,使用IIS,WEBAPI,求教各位IT大佬这是啥问题?

问题描述:

1、使用HttpWebRequest进行上传文件开始时会出现卡顿,卡顿的位置在400KB左右,无论上传文件是多大小;卡顿之后的后续上传是连续的,无问题。

2、问题现象不是每次都有,概率约为90%。

3、在卡顿时候,VS监测的内存使用会出现升高,怀疑为客户端问题。

 

问题截图:

图片说明

 

自我排查:

上传文件太大:尝试过100M以上的文件,此问题依旧,400KB左右会卡一下。

 

客户端代码:(卡顿的时候已经进入了这个循环,但是没发现啥问题)

Stream requestStream = this._webRequest.GetRequestStream();
requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
    m_uploadlength += bytesRead;
    progress(m_uploadlength, m_maxlength, "upload...(" + m_uploadlength / 1024 + "KB/" + m_maxlength / 1024 + "KB)");
}

服务端代码:(使用的webapi,架设在IIS上)

var m_request = HttpContext.Current.Request;
if (m_request.Files.Count > 0)
{
    HttpPostedFile file = m_request.Files[0];
    string m_filePath = Manager.Share.DataDir(m_user[0]) + @"\" + file.FileName;
    file.SaveAs(m_filePath);

}

服务端自定义的配置文件:

<system.web>
  <compilation debug="true" targetFramework="4.5.2" />
  <!--设置最大上传文件长度-->
  <httpRuntime targetFramework="4.5.2" 
        maxRequestLength="2097151"
        useFullyQualifiedRedirectUrl="true"  
        executionTimeout="6000"
        minFreeThreads="8"  
        minLocalRequestFreeThreads="4"  
        appRequestQueueLimit="100"  
        enableVersionHeader="true"  
        />
</system.web>

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="2072576000"/>
  </requestFiltering>
</security>

自我怀疑为IIS服务端缓存问题,或是客户端加载问题。

第一次发CSDN提问,还请各位大佬指点。[抱拳][抱拳][抱拳]

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2020-03-13 11:49

    上传文件开始时会出现卡顿应该和网络延迟有关,和内存增加无关。
    这么一点点内存增加(几MB,相当于0.00几GB),对于现在动辄几十GB的内存的电脑来说,如同九牛一毛。而且这也是正常现象。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题