2013-02-11 3 views
2

J'ai été développé le code pour importer des données de feuille Excel dans la grille, en utilisant C#. Cela fonctionne très bien en local, quand il s'agit de la production, après une certaine période de temps, il donne une erreur en disant Unspecified error. Si je réinitialise le serveur IIS, il est résolu. Quelqu'un peut-il suggérer une solution permanente pour le même?Importer des fichiers Excel dans .net ne fonctionne pas après une certaine période dans la production

Exemple de code pour ouvrir Excel:

fileName = Path.GetFileName(fuExcel.PostedFile.FileName); 
        string fileExtension = Path.GetExtension(fuExcel.PostedFile.FileName); 
        string fileLocation = Server.MapPath("~/App_Data/" + fileName); 
        fuExcel.SaveAs(fileLocation); 
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" + fileLocation + "';Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
        DataTable dtFromExcel = new DataTable(); 
        DataTable dtBarcodeDetails = new DataTable(); 
        string Sheet = System.Configuration.ConfigurationManager.AppSettings["SheetName"].ToString(); 
        using (OleDbConnection excelConnection = new OleDbConnection(connectionString)) 
        { 
         OleDbCommand cmd = new OleDbCommand("Select * from [" + Sheet + "$]", excelConnection); 
         excelConnection.Open(); 
         OleDbDataReader dReader; 
         dReader = cmd.ExecuteReader(); 
         dtFromExcel.Load(dReader); 
         excelConnection.Close(); 
        } 

Code Config:

<system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
     <identity impersonate="false"/> 
<httpRuntime maxRequestLength="1048576" executionTimeout="43200"/> 
    </system.web> 
+0

avez-vous excellez pilote installé sur votre serveur? –

+0

Vous devrez trouver un autre moyen de lire les fichiers Excel sur le serveur, voir le point 4 sous "Aperçu" [ici] (http://www.microsoft.com/fr-fr/download/details.aspx?id=13255): "pas destiné à être utilisé à partir de asp.net" –

+0

Je n'utilise pas ADE, j'utilise Jet.OLEDB, vous pouvez voir dans le code. – user2060493

Répondre

0

Je suppose que si des exceptions sont soulevées dans votre traitement Excel, votre connexion sera disposée. Mais je ne suis pas sûr que ce sera fermé. Cela change-t-il quelque chose si vous essayez quelque chose comme ça?

using (OleDbConnection excelConnection = new OleDbConnection(connectionString)) 
{ 
    try 
    { 
     OleDbCommand cmd = new OleDbCommand("Select * from [" + Sheet + "$]", excelConnection); 
     excelConnection.Open(); 
     OleDbDataReader dReader; 
     dReader = cmd.ExecuteReader(); 
     dtFromExcel.Load(dReader); 
    } 
    finally 
    { 
     if (excelConnection != null && excelConnection.State == ConnectionState.Open) 
      excelConnection.Close(); 
     OleDbConnection.ReleaseObjectPool(); 
    } 
} 

Espérons que cela aidera

+0

Non, cela n'aide pas ma cause – user2060493

+0

@ user2060493: édité ma réponse, voir ReleaseObjectPool() dans la clause finally – jbl

Questions connexes