【发布时间】:2018-01-03 14:18:36
【问题描述】:
我在 asp.net 网站上有一个按钮,当我输入某些值时,它会下载 Excel 文件,它指出此错误。
我后面的代码如下
Protected Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.xls"
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
GridView6.RenderControl(htmlWrite)
Response.Write(stringWrite.ToString())
Response.[End]()
End Sub
aspx中的按钮如下:
<asp:Button ID="Button4" runat="server" Text="Extract RTD Raw Data" nclick="Button4_Click"
BackColor="#FF9966" CssClass="myButton" Font-Bold="True"
Font-Italic="True" />
我正在获取此堆栈跟踪。
[OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。]
System.Web.Util.HttpEncoder.UrlDecode(Byte[] 字节,Int32 偏移量, Int32 计数,Encoding 编码)+76
System.Web.HttpValueCollection.FillFromEncodedBytes(字节 [] 字节, 编码编码)+164
System.Web.HttpRequest.FillInFormCollection() +77 [HttpException (0x80004005): URL 编码的表单数据无效。]
System.Web.HttpRequest.FillInFormCollection() +130
System.Web.HttpRequest.EnsureForm() +69
System.Web.HttpRequest.get_Form() +13
System.Web.HttpRequest.get_HasForm() +9800635
System.Web.UI.Page.GetCollectionBasedOnMethod(布尔值 dontReturnNull) +95 System.Web.UI.Page.DeterminePostBackMode() +69 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +220
【问题讨论】:
-
开始使用专门的库来创建 Excel 文件,例如 EPPlus。您现在所做的只是创建一个扩展名为 .xls 的 HTML 页面。
-
遇到这个错误时
GridView6的数据源是不是特别大?如果是这样,那么您可能需要将其分块传输到客户端,而不是尝试复制整个缓冲区(因为看起来您正在合法地达到进程内存限制)。有关一些选项,请参见此处:stackoverflow.com/q/608480/861565 -
@jadarnel 感谢您的建议,我将尝试通过选项
-
通过在 Web.config 文件中插入
<machineKey validationKey="929DF4BCF13739428C8C765842BD122C653C28F688D399F216942E5438AA880B4A793C0772A51660FDA9A69B079AB3B0ADFCFC14941F5BBD673BC72E9804DF44" decryptionKey="0B4443E8C132884733E8B26587FFCE50562CF8CF9980BAD4813A95D54A7A369B" validation="SHA1" decryption="AES" />解决了错误。感谢您的指导和帮助。
标签: asp.net .net excel vb.net ms-access