2013-03-05 6 views
5

Próbuję odczytać dane z pliku programu Excel do zestawu danych ADO.NET za pomocą poniższego kodu. W aplikacji Windows Forms to działa, ale w aplikacji asp.net nie działa.Szczegóły wyjątku: System.Web.HttpException: Maksymalna długość żądania przekroczyła

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"]; 
} 

stosu Ślad:

[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 

czy jest jakiś lepszy sposób czytania plik Excel z komputera klienta do w DataTable ADO.NET w ASP.NET

Odpowiedz

26

Dodaj następujący tag w Twój plik web.config i sprawdzić, czy to działa

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

pod Abacus

+1

Cyfra jest w KB. Nie używaj dużych wartości, jeśli spodziewasz się ataków DoS. – Faiz