2

私は、c#を使用してExcelシートデータをグリッドにインポートするコードを開発しました。ローカルでは正常に動作していますが、本番環境では、一定期間が経過すると、「」というエラーが発生しますUnspecified error。IISサーバーをリセットすると、解決されます。誰かが同じための恒久的な解決策を提案できますか?

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();
                    }

構成コード:

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

1 に答える 1

0

Excelの処理で例外が発生した場合、接続は破棄されると思います。しかし、私はそれが閉鎖されるかどうかはわかりません。このようなことをしようとすると、何かが変わりますか?

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();
    }
}

これがお役に立てば幸いです

于 2013-02-11T09:59:24.817 に答える