簡體   English   中英

OLEDB在asp.net C#IIS上無法讀取Excel文件

[英]OLEDB reading Excel File Not Working on IIS asp.net C#

我正在嘗試瀏覽文件,然后將該文件保存到一個文件夾中,並嘗試使用OLEDB讀取該文件,Everything在本地以及在IIS上都可以正常工作。 當我在服務器上被釋放時,它也無法正常工作,並得到異常提示,例如“拒絕訪問路徑'C:\\ inetpub \\ wwwroot \\ exceptApp \\ Files \\ TemplateFile.xlsx'。”,IIS_USERS用戶對文件夾具有完全權限。 下面是我的代碼

 protected void BtnSubmit_Click(object sender, EventArgs e)
 {
     try
         {
            grdResult.DataSource = null;
            grdResult.DataBind();
            BtnExport.Visible = false;

            if (fuFile.HasFile)
            {
                string readConnString = "";
                var fileExtn = Path.GetExtension(fuFile.FileName).ToLower();
                var dir = Server.MapPath("~\\Files");
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                var fileName = Path.GetFileName(fuFile.FileName.Trim());

                var fileNameWithPath = Path.Combine(dir, fileName);

                if (File.Exists(fileNameWithPath))
                {
                    File.Delete(fileNameWithPath);
                }
                fuFile.PostedFile.SaveAs(fileNameWithPath);
                fuFile.FileContent.Dispose();
                //Connection String to Excel Workbook
                if (fileExtn.Trim() == ".xls")
                {
                    readConnString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", fileNameWithPath);
                }
                else if (fileExtn.Trim() == ".xlsx")
                {
                    readConnString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";", fileNameWithPath);
                }


                using (var dbConn = new OleDbConnection(readConnString))
                {                        
                    dbConn.Open();
                    var dt = dbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    using (var cmd = new OleDbCommand(@"SELECT * FROM [" + dt.Rows[0]["TABLE_NAME"].ToString() + "]", dbConn))
                    {                            
                        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        var resultDt = ds.Tables[0];
                        dbConn.Close();
                          if (resultDt.Rows.Count > 0)
                            {
                                BtnExport.Visible = true;
                                grdResult.DataSource = resultDt;
                                grdResult.DataBind();
                            }                         

                    }                        

                }
                Thread.Sleep(1000);

                if (File.Exists(fileNameWithPath))
                {
                    File.Delete(fileNameWithPath);
                }

            }
        }
        catch (Exception ex)
        {
            exlog.Log("BtnSubmit_Click", ex.Message);
        }
    }

您必須將對inetpub文件夾的訪問權限授予服務器上的IIS_IUSRS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM