下列是ASP.NET上传机制的补遗.
1. UploadFrameHelper 提供了GetPreviousPage函式,可以取得Cross-Page PostBack时
的Page,如下所示:
<%@ WebHandler Language="C#" Class="Handler" %>
using System; public class Handler : IHttpHandler { } |
2. 这个机制事实上并不受限于maxRequestLength的设定,
所谓的限制来自于下方的程式码.
HackUpload.cs
.......... public bool Load() { if (_context.Request.ContentLength < GetMaxRequestSize()) { .......... |
若移除此处程式码,那么上传档案将无限制,我猜大概只受限于executionTimeout及
IO,大概是2GB 或 4GB吧.
3.ASP.NET Runtime 的记忆体耗费,记忆中, ASP.NET Runtime是将上传的档案先行存在记忆体中的,
这意味著当上传档案很大,而且有很多人使用时,IIS将会耗掉许多记忆体.
从追踪ASP.NET Runtime的处理机制来看,我想会有办法解决此问题,不过得待我有空时才能好好看看.