Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Website sau khi publish không get được data file .mdb (Access)

  1. #1
    Ngày gia nhập
    04 2018
    Bài viết
    1

    Mặc định Website sau khi publish không get được data file .mdb (Access)

    Chào mọi người,
    Mình đang viết 1 website ASP.NET MVC 4 có chức năng get data và hiển thị data trong 1 file .mdb access, data là thông tin chấm công xuất ra từ máy chấm công.
    Vấn đề:
    Khi debug web bằng Visual studio, chương trình hiển thị giao diện, get data và hiển thị bình thường. Sau khi Publish và copy web lên Webserver, website hiển thị giao diện bình thường nhưng không hiển thị data.
    IDE: Visual Studio 2015 express for web, 2017 Community.
    WebServer: Windows Server 2012, IIS 8.0.
    Mô tả chuơng trình:
    - File .mdb nằm trên 1 máy khác (máy A) trong cùng mạng. Share thư mục chứa file cho Everyone được phép Read/Write. Từ máy chạy VS (máy B) và Webserver đều truy cập được thư mục share này và open file .mdb.
    - Đây là code mình dùng để get data trong file .mdb:
    Code:
    public DataTable getAllDatabase()
            {
                // Get DB Path - đường dẫn DB trên máy A
                string dbPath = @"\\192.168.1.165\DBChamCong\WiseEyeV5.1.mdb";
                //
                OleDbConnection con = new OleDbConnection();
                OleDbCommand cmd = new OleDbCommand();
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                DataTable dt = new DataTable();
                //
                try
                {
                    con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + ";Jet OLEDB:Database Password=12112009;Persist Security Info=True;");
                    con.Open();
                    // Lấy 15000 dòng mới nhất trong DB
                    cmd = new OleDbCommand("Select top 15000 CheckInOut.UserEnrollNumber, UserInfo.UserFullName, TimeStr from CheckInOut inner join UserInfo on CheckInOut.UserEnrollNumber = UserInfo.UserEnrollNumber order by TimeStr desc", con);
                    adapter = new OleDbDataAdapter(cmd);
                    adapter.Fill(dt);
                    return dt;
                }
                catch (Exception ex)
                {
                    return dt;
                }
                finally
                {
                    adapter.Dispose();
                    cmd.Dispose();
                    con.Close();
                    con.Dispose();
                }
            }
    - Sau đấy mình truyền giá trị hàm này từ Controller vào View. Hiển thị ra
    Code:
    public ActionResult Index()
            {
                DataTable dt = new CheckInOutModel().getAllDatabase();
                return View(dt);
            }
    Phuơng án xử lý: (không thành công)
    - C1: Project Properties -> Build project theo cả 2 platform target : x86 và x64
    - C2: Project Properties -> Package/Publish Web -> Chọn All file in this project folder
    - C2: Dùng Odbc thay Oledb
    - C3: Dùng Access Interop
    - C4: Copy file .mdb từ máy A về Webserver -> vào thư mục chứa project, get data từ file copy về (dùng oledb, odbc, interop). Không hiên thị dữ liệu nhưng vẫn copy được file về thư mục
    mình thêm lệnh sau để copy file về thư mục project
    Code:
    string dbPath_new = System.Web.HttpRuntime.AppDomainAppPath + "WiseEyeV5.1.mdb";
    File.Copy(dbPath, dbPath_new, true);
    Sửa connection string -> "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath_new + ";Jet OLEDB: Database Password=12112009;Persist Security Info=True;"
    ---------
    mọi người có ai gặp sự cố như vậy chưa? Có thể cho mình xin trợ giúp hoặc link đến các bài viết tương tự đã đăng. Xin cảm ơn.
    Đã được chỉnh sửa lần cuối bởi tranminhhoanghvt : 13-04-2018 lúc 10:21 AM.

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    1,487

    Mở được cứ mở, sao lại viết chết trong code?
    Visual C# Code:
    1.         public DataTable getAllDatabase(){
    2.             // Get DB Path - đường dẫn DB trên máy A
    3.             string dbPath = @"\\192.168.1.165\DBChamCong\WiseEyeV5.1.mdb"; //Vị trí cố định, không mở, không thay đổi!
    4.             //
    5.             OleDbConnection con = new OleDbConnection();
    6.             OleDbCommand cmd = new OleDbCommand();
    7.             OleDbDataAdapter adapter = new OleDbDataAdapter();
    8.             DataTable dt = new DataTable();
    9.             //
    10.             try{
    11.                 con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + ";Jet OLEDB:Database Password=12112009;Persist Security Info=True;");
    12.                 con.Open();
    13.                 // Lấy 15000 dòng mới nhất trong DB
    14.                 cmd = new OleDbCommand("Select top 15000 CheckInOut.UserEnrollNumber, UserInfo.UserFullName, TimeStr from CheckInOut inner join UserInfo on CheckInOut.UserEnrollNumber = UserInfo.UserEnrollNumber order by TimeStr desc", con);
    15.                 adapter = new OleDbDataAdapter(cmd);
    16.                 adapter.Fill(dt);
    17.                 return dt;
    18.             }
    19.             catch (Exception ex){
    20.                 return dt;
    21.             }
    22.             finally{
    23.                 adapter.Dispose();
    24.                 cmd.Dispose();
    25.                 con.Close();
    26.                 con.Dispose();
    27.             }
    28.         }

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn