小弟在可开发.net framework 2.0 asp.net网站时,遇到了微软net 2.0 的925248号bug(http://support.microsoft.com/kb/925248/),在微软发布的.net 2.0 sp1 说明表示已修复此bug(http://support.microsoft.com/kb/945757/zh-cn),但是,我在安装此sp1后,问题依旧。而且使用vs2008+ .net 3.5 的情况下,此bug依然存在。
具体的bug是:
解决asp.net上传大文件性能,自定义HTTPModel:
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication app = source as HttpApplication;
IServiceProvider provider = (IServiceProvider)HttpContext.Current; HttpWorkerRequest _workrequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
if (app.Request.ContentType.Contains("multipart/form-data"))
{
int _totallength = int.Parse(_workrequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength));
int _readedindex = 0;
byte[] _buffer = new byte[_totallength]; while (_workrequest.IsClientConnected() && !_workrequest.IsEntireEntityBodyIsPreloaded())
{
byte[] tempBuff = _workrequest.GetPreloadedEntityBody();
int _readedlength = _workrequest.GetPreloadedEntityBodyLength();
在实际文件大于49152时,_workrequest.GetPreloadedEntityBody()将只能获取49152个字节的数据,而_workrequest.GetPreloadedEntityBodyLength()将一直返回49152。不知大家谁知道是哪里出错了,是什么原因,不知道大家谁遇到类型相同情况,谢谢。
具体的bug是:
解决asp.net上传大文件性能,自定义HTTPModel:
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication app = source as HttpApplication;
IServiceProvider provider = (IServiceProvider)HttpContext.Current; HttpWorkerRequest _workrequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
if (app.Request.ContentType.Contains("multipart/form-data"))
{
int _totallength = int.Parse(_workrequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength));
int _readedindex = 0;
byte[] _buffer = new byte[_totallength]; while (_workrequest.IsClientConnected() && !_workrequest.IsEntireEntityBodyIsPreloaded())
{
byte[] tempBuff = _workrequest.GetPreloadedEntityBody();
int _readedlength = _workrequest.GetPreloadedEntityBodyLength();
在实际文件大于49152时,_workrequest.GetPreloadedEntityBody()将只能获取49152个字节的数据,而_workrequest.GetPreloadedEntityBodyLength()将一直返回49152。不知大家谁知道是哪里出错了,是什么原因,不知道大家谁遇到类型相同情况,谢谢。
<system.web>
<httpRuntime maxRequestLength="2097151" executionTimeout="900"/>
</system.web>