2013-03-05 103 views
5

正在嘗試使用以下代碼將數據從Excel文件讀取到ADO.NET數據集中。在一個windows窗體應用程序中它工作,但在一個asp.net應用程序中失敗。異常詳細信息:System.Web.HttpException:超出最大請求長度

public static DataTable ArchiveData(string fileName) 
{ 
    FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read); 

    //Reading from a OpenXml Excel file (2007 format; *.xlsx) 
    IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
    excelReader.IsFirstRowAsColumnNames = true; 

    DataSet result = excelReader.AsDataSet(); 

    //Free resources (IExcelDataReader is IDisposable) 
    excelReader.Close(); 
    return result.Tables["Archive data"]; 
} 

堆棧跟蹤:

[HttpException (0x80004005): Maximum request length exceeded.] 
    System.Web.HttpRequest.GetEntireRawContent() +8793522 
    System.Web.HttpRequest.GetMultipartContent() +62 
    System.Web.HttpRequest.FillInFormCollection() +236 
    System.Web.HttpRequest.get_Form() +68 
    System.Web.HttpRequest.get_HasForm() +8745879 
    System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97 
    System.Web.UI.Page.DeterminePostBackMode() +63 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +133 

還是有閱讀從客戶機上的Excel文件到ADO.NET數據表中的ASP.NET一個更好的辦法

回答

26

添加下面的標籤你的web.config文件,並檢查是否正常工作

<httpRuntime maxRequestLength="350000" enableVersionHeader="false" maxQueryStringLength="3584" executionTimeout="600"/> 
+3

Abacus 2013-07-29 22:00:23

+1

數下以KB爲單位。如果您預計會發生DoS攻擊,請不要使用較大的值。 – Faiz 2015-03-01 12:29:48