1

我在加密后将文档上传到本地驱动器中,并且我在 web.config 中有最大上传限制为

 <httpRuntime maxRequestLength="2147483647" executionTimeout="1000"/>

当文档大小大于 20mb 时显示以下异常

 Source Error: 
 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception 

 Stack Trace: 
 [OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.]
 System.IO.MemoryStream.set_Capacity(Int32 value) +93
 System.IO.MemoryStream.EnsureCapacity(Int32 value) +50
 System.IO.MemoryStream.WriteByte(Byte value) +130
 System.IO.BinaryWriter.Write(Byte value) +20
 System.Web.UI.SerializerBinaryWriter.WriteEncoded(Int32 value) +62
 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +2081

 [ArgumentException: Error serializing value '644314' of type 'System.Int32.']
 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3371
 System.Web.UI.ObjectStateFormatter.Serialize(Stream outputStream, Object stateGraph) +141
 System.Web.UI.ObjectStateFormatter.Serialize(Object stateGraph) +57
 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(Object state) +4
 System.Web.UI.Util.SerializeWithAssert(IStateFormatter formatter, Object stateGraph) +37
 System.Web.UI.HiddenFieldPageStatePersister.Save() +79
 System.Web.UI.Page.SavePageStateToPersistenceMedium(Object state) +108
 System.Web.UI.Page.SaveAllState() +315
 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2839

这个异常的原因是什么以及如何解决这个..

4

1 回答 1

3

您不应将文件存储在 ViewState 中。它会对性能产生非常糟糕的影响(因为它会为每个后续请求传输两次。

您需要将文件存储在临时文件夹中,然后将文件路径存储在 ViewState 中。请记住,您需要某种清理例程来删除(例如)一天前的文件。

于 2013-04-04T11:04:24.570 回答