carga el file xls al server web

Intento upload un file Excel al server web y luego abrirlo para leer las tablas en un listbox, luego seleccionar el listbox y volver a abrir el file Excel para vincular los datos a una vista en cuadrícula.

//upload file to web server - this works fine protected void getFile() { string importPL = string.Empty; if (FileUpload1.HasFile) { string fileName = Server.HtmlEncode(FileUpload1.FileName); string extension = System.IO.Path.GetExtension(fileName); if (StaticHelpers.getApplicationEnvironment() == "D") { //dev importPL = System.Configuration.ConfigurationManager.AppSettings["devPL"]; } else if (StaticHelpers.getApplicationEnvironment() == "T") { //test importPL = System.Configuration.ConfigurationManager.AppSettings["devPL"]; } else { //prod importPL = System.Configuration.ConfigurationManager.AppSettings["prodPL"]; } if ((extension == ".xls" || extension == ".xlsx")) { FileInfo fileInfo = new FileInfo(FileUpload1.PostedFile.FileName); fileName = fileInfo.Name; string excelFilePath = importPL; FileUpload1.SaveAs(excelFilePath + fileName); SpreadSheet = FileUpload1.PostedFile.FileName; SpreadSheet = excelFilePath + fileName; lblss.Text = SpreadSheet; lblSpreadSheet.Text = "SpreadSheet: " + SpreadSheet.ToString(); if (SpreadSheet.Trim() != string.Empty) { try { ArrayList strTables = GetTableExcel(SpreadSheet);//get list of worksheets then bind to listbox lstbxWorksheets.DataSource = strTables; lstbxWorksheets.DataBind(); } catch (Exception ex) { lblMessage.Text = ex.Message.ToString(); } } } } } //get list of worksheets I believe this is where I'm having most of my problems public static ArrayList GetTableExcel(string strFileName) { ArrayList strTables = new ArrayList(); Catalog oCatlog = new Catalog(); ADOX.Table oTable = new ADOX.Table(); ADODB.Connection oConn = new ADODB.Connection(); string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFileName + ";Extended Properties='Excel 12.0;HDR=YES';"; try { oConn.Open(connectionString); oCatlog.ActiveConnection = oConn; if (oCatlog.Tables.Count > 0) { int item = 0; foreach (ADOX.Table tab in oCatlog.Tables) { if (tab.Type == "TABLE") { strTables.Add(tab.Name); item++; } } } oConn.Close(); } catch (Exception ex) { // } return strTables; } //select the worksheet from the list box protected void lstbxWorksheets_SelectedIndexChanged(object sender, EventArgs e) { WorkSheet = lstbxWorksheets.SelectedItem.ToString(); lblWorkSheet.Text = "Worksheet: " + WorkSheet; SpreadSheet = lblss.Text; tableName = WorkSheet; if (tableName != string.Empty) { SelectedTable = tableName; } else { lblMessage.Text = "Select a worksheet."; } if ((SelectedTable != string.Empty) && (SelectedTable != null)) { DataTable dt = GetDataTableExcel(SpreadSheet, SelectedTable); gvData.DataSource = dt.DefaultView; gvData.DataBind(); WorkSheet = SelectedTable.ToString(); } } //get data from workbook and bind to gridview public static DataTable GetDataTableExcel(string strFileName, string Table) { string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFileName + ";Extended Properties='Excel 12.0;HDR=YES';"; System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString); conn.Open(); string strQuery = "SELECT * FROM [" + Table + "]"; System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); System.Data.DataSet ds = new System.Data.DataSet(); adapter.Fill(ds); conn.Close(); return ds.Tables[0]; } 

Incluso agregué esto a web.config:

 <location path="pl"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> 

lo siento en aspnet ver con motor a reacción como en este proyecto http://www.codeproject.com/Articles/8096/C-Retrieve-Excel-Workbook-Sheet-Names