问题描述:
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提问,还请各位大佬指点。[抱拳][抱拳][抱拳]