• Hotline: 0989.000.420
  • Giới thiệu
  • Vai trò pn
  • Facbook hội pn
  • Sitemap
SỬA CHỮA ĐỘNG CƠ ĐIỆN YÊN BÁI

Vĩnh Kiên- Yên Bình- Yên Bái 0989 000 420- 038 540 7810

  • Trang chủ
  • Giới thiệu
    • Giới thiệu chung
    • Chức năng nhiệm vụ
    • Cơ cấu tổ chức
    • Các phòng chức năng nghiệp vụ
      • Văn phòng Ban QLDA Đầu tư xây dựng
      • Phòng Tài chính - Kế toán
      • Phòng Kế hoạch tổng hợp
      • Phòng Kỹ thuật - Thẩm định
      • Phòng Điều hành - Dự án
  • Thiết bị điện
  • Hệ thống DCS
    • Thiết kế tủ điện
    • Lập trình PLC
    • Giao diện DCS
    • Chuyển đối số
    • Modbus
    • Hệ thống rơ le bảo vệ
    • Lưới điện
  • Truyền thông công nghiệp
  • Config IEC104 , 61850
    • RS485
    • IEC104
    • IEC61850
    • Vòng quay may mắn
  • Máy điện
  • Góp ý
  • Liên hệ
Học Học Nữa - Học Mãi
Liên hệ quảng cáo
  • Trang chủ
  • C#

chết runtime ghi tag, log code Z350 kẹt khi tạo và ghi liên tục nên chết runtime giữa chừng

Bởi Operator vào 02 thg 11, 2026
Chia sẻ
  • Sao chép liên kết
  • Chia sẻ với Facebook
  • Chia sẻ với X
  • Chia sẻ với Pinterest
  • Chia sẻ với Linkedin
  • Gửi bài qua Email

gửi email cho tác giả




    \\\\\\\\\\\\\\ Chat GPT phán đoán log để xử lý. nhờ AI phân tích và đưa . phải phân tích log thì mởi xử lý hoàn toàn chính xác được nguyên nhân chuẩn được

    Do đó hoàn toàn xác định được chính xác hoàn toàn nguyên nhân chuẩn được . 

    Hosting ghi nhận bắt đầu shutdown

    11:45:03

    Ứng dụng khởi động lại

    Các luồng bị ảnh hưởng gồm:

    • PollDevice: đọc dữ liệu PLC.

    • Schedule: lập lịch polling.

    • EvalAlarm: đánh giá cảnh báo.

    • AlarmSnapshot: lấy dữ liệu Alarm.

    • RefreshTrendPens: cập nhật cấu hình Trend.

    Điều này có thể khiến runtime ngừng cập nhật dữ liệu và mất kết nối.

    scadaweb_20261102.log

    2. Hai lỗi khác trong log

    Lỗi JavaScript TagMapBox

    Cannot read property '_tm' of null
    scada.js?v=16:975
    TagMapBox.razor:line 38

    Đây là lỗi JS Interop khi cập nhật bản đồ với đối tượng đã null. Nó làm hỏng Blazor circuit tương ứng, nhưng chưa đủ bằng chứng để kết luận đây là nguyên nhân dừng toàn bộ tiến trình.

    scadaweb_20261102.log

    Lỗi Antiforgery

    The antiforgery token could not be decrypted.
    The key was not found in the key ring.

    Có thể do cookie cũ không còn khớp với Data Protection key hiện tại. Đây không phải nguyên nhân trực tiếp gây kẹt runtime.

    scadaweb_20261102.log

    3. Kết luận quan trọng

    Tôi nghi ngờ nhất là thao tác quản lý tag đang giữ engine.sync trong lúc thực hiện công việc quá nặng hoặc chờ một thao tác khác. Tuy nhiên, log hiện tại ghi RenameTag, không ghi AddTag, nên chưa thể khẳng định chính xác hàm thêm tag là thủ phạm.

    Một điểm nữa: Application is shutting down... là thông báo shutdown có kiểm soát, không phải bằng chứng trực tiếp về crash. Cần kiểm tra thêm Windows Event Viewer hoặc log của dịch vụ chạy SCADA để xác định ai yêu cầu dừng.

    4. Hướng sửa tôi đề xuất

    Tôi muốn xử lý tận gốc thay vì tiếp tục tối ưu giao diện:

    1. Rút ngắn thời gian giữ engine.sync.

    2. Không thực hiện lưu JSON, quét toàn bộ tag hoặc thao tác I/O lâu bên trong lock.

    3. Tách thao tác thêm, sửa, đổi tên tag khỏi luồng polling.

    4. Bổ sung timeout và log thời gian giữ khóa, ghi rõ thao tác nào đang giữ khóa.

    5. Bảo đảm thêm tag không làm dừng PollDevice, realtime, Trend và Alarm.

    Tôi cần bạn gửi thêm một file: ZIP mã nguồn đang chạy đúng lúc xuất hiện lỗi (bản V18 hoặc bản bạn đang sử dụng).

    Tôi sẽ kiểm tra trực tiếp AddTag, RenameTag, SaveNow và các vị trí lock(sync), sau đó sửa thành một bản hoàn chỉnh. Không sửa Trend và Alarm, không tiếp tục chia thành nhiều bản tối ưu nhỏ.

    \\\\\\\\\\

     Các khối lock(sync) khác cũng gọi vào driver (Dispose, DriverRegistry.Create) ngay khi đang giữ sync, cùng kiểu rủi ro. Mình xem 4 chỗ này.

    Log đã chỉ ra chỗ kẹt, và mình đã sửa trong z350_fix_renametag_deadlock.zip. Mình vẫn chưa build được vì máy mình không có dotnet.

    Log nói gì

    11:44:03.521  RenameTag:437 (thread 39) lấy khoá engine.sync
    11:44:39 → 11:44:59  KẸT 36s … 54s: PollDevice, EvalAlarm, Idx, Schedule,
                         RefreshTrendPens, AlarmSnapshot … đều chờ; chủ khoá = RenameTag
    11:45:02  bạn tắt/chạy lại ScadaWeb

    Hàm RenameTag giữ khoá engine.sync hơn 56 giây mà không nhả. 14 luồng khác (đọc PLC, alarm, vẽ trend, giao diện) đều chờ khoá này, nên cả SCADA đứng. Trong log này không có dòng [ADDTAG] nào, nên lần treo mà log ghi lại xảy ra lúc đổi tên tag, không phải lúc bấm “+ Thêm Tag”. Nhiều khả năng đó là cùng một lỗi với lần bạn gặp trước đó, vì triệu chứng giống nhau.

    Nguyên nhân

    RenameTag đang giữ sync mà lại lấy thêm các khoá khác bên trong: lock (dv) của thiết bị, khoá chương trình Ladder, và thư viện widget. Trong khi đó luồng Ladder hoặc driver giữ chính khoá đó rồi gọi vào engine (như Idx, FindTag) và phải chờ sync. Hai bên giữ khoá của nhau và chờ nhau mãi (deadlock). Log không cho biết chính xác khoá nào, vì lock (dv) và khoá Ladder chưa được theo dõi. Vì vậy đây là suy luận chắc nhưng chưa phải xác nhận 100%.

    Đã sửa

    • RenameTag: chỉ phần dữ liệu của engine (đổi tên, xu hướng, alarm đang báo) nằm trong lock(sync). Phần cập nhật widget, ThingsBoard, mail, AdvanLink, Ladder, script chạy ngoài khoá. Có try/catch ghi log [RENAME] nếu lỗi.
    • RemoveDevice: gọi Dispose driver ngoài lock(sync), cùng kiểu rủi ro.
    • Giữ nguyên các sửa trước (chỉ mục tăng dần, thứ tự khoá Idx/Save, bộ theo dõi khoá).

    Khoá khác còn nằm trong sync

    Còn hai chỗ gọi code driver khi đang giữ sync: tạo driver trong PollDevice và DeviceEdit/UpsertDevice (gọi DriverRegistry). Mình chưa đổi vì thường chỉ khởi tạo. Nếu log lần sau vẫn có chủ khoá = ... ở các hàm này, mình sẽ sửa tiếp.

    Bạn làm giúp

    1. Chép đè 10 file trong zip lên project, build, chạy (x64 như đã nói).
    2. Thử đổi tên một tag, và thử thêm tag bằng tay, khi runtime đang chạy với hơn 2000 tag.
    3. Nếu còn kẹt, gửi mình các dòng [LOCK], [RENAME], [ADDTAG].
    4. Tôi đã tìm thấy nguyên nhân đáng chú ý trong log ngày 02/11/2026: khi thao tác đổi tên tag, SCADA bị giữ khóa engine.sync rất lâu. Đây có thể là nguyên nhân làm runtime đứng rồi mất kết nối.

      Cụ thể, log ghi nhận RenameTag giữ khóa từ 11:44:03.521, sau đó nhiều luồng PollDevice, Schedule, EvalAlarm, AlarmSnapshot và RefreshTrendPens phải chờ khóa. Có luồng đã chờ tới 54 giây. Đây là dấu hiệu nghiêm trọng hơn một lỗi giao diện thông thường.

      1. Nguyên nhân chính: khóa engine.sync bị giữ quá lâu

      Nghiêm trọng

      Thời điểm

      Sự kiện

      11:44:03.521

      RenameTag giữ khóa engine.sync

      11:44:06

      Các luồng bắt đầu bị kẹt

      11:44:30

      Nhiều luồng đã chờ 30 giây

      11:44:57

      Có luồng chờ tới 54 giây

      11:44:34

      Hosting ghi nhận bắt đầu shutdown

      11:45:03

      Ứng dụng khởi động lại

      Các luồng bị ảnh hưởng gồm:

      • PollDevice: đọc dữ liệu PLC.

      • Schedule: lập lịch polling.

      • EvalAlarm: đánh giá cảnh báo.

      • AlarmSnapshot: lấy dữ liệu Alarm.

      • RefreshTrendPens: cập nhật cấu hình Trend.

      Điều này có thể khiến runtime ngừng cập nhật dữ liệu và mất kết nối.

      scadaweb_20261102.log

      2. Hai lỗi khác trong log

      Lỗi JavaScript TagMapBox

      Cannot read property '_tm' of null
      scada.js?v=16:975
      TagMapBox.razor:line 38

      Đây là lỗi JS Interop khi cập nhật bản đồ với đối tượng đã null. Nó làm hỏng Blazor circuit tương ứng, nhưng chưa đủ bằng chứng để kết luận đây là nguyên nhân dừng toàn bộ tiến trình.

      scadaweb_20261102.log

      Lỗi Antiforgery

      The antiforgery token could not be decrypted.
      The key was not found in the key ring.

      Có thể do cookie cũ không còn khớp với Data Protection key hiện tại. Đây không phải nguyên nhân trực tiếp gây kẹt runtime.

      scadaweb_20261102.log

      3. Kết luận quan trọng

      Tôi nghi ngờ nhất là thao tác quản lý tag đang giữ engine.sync trong lúc thực hiện công việc quá nặng hoặc chờ một thao tác khác. Tuy nhiên, log hiện tại ghi RenameTag, không ghi AddTag, nên chưa thể khẳng định chính xác hàm thêm tag là thủ phạm.

      Một điểm nữa: Application is shutting down... là thông báo shutdown có kiểm soát, không phải bằng chứng trực tiếp về crash. Cần kiểm tra thêm Windows Event Viewer hoặc log của dịch vụ chạy SCADA để xác định ai yêu cầu dừng.

      4. Hướng sửa tôi đề xuất

      Tôi muốn xử lý tận gốc thay vì tiếp tục tối ưu giao diện:

      1. Rút ngắn thời gian giữ engine.sync.

      2. Không thực hiện lưu JSON, quét toàn bộ tag hoặc thao tác I/O lâu bên trong lock.

      3. Tách thao tác thêm, sửa, đổi tên tag khỏi luồng polling.

      4. Bổ sung timeout và log thời gian giữ khóa, ghi rõ thao tác nào đang giữ khóa.

      5. Bảo đảm thêm tag không làm dừng PollDevice, realtime, Trend và Alarm.

      Tôi cần bạn gửi thêm một file: ZIP mã nguồn đang chạy đúng lúc xuất hiện lỗi (bản V18 hoặc bản bạn đang sử dụng).

      Tôi sẽ kiểm tra trực tiếp AddTag, RenameTag, SaveNow và các vị trí lock(sync), sau đó sửa thành một bản hoàn chỉnh. Không sửa Trend và Alarm, không tiếp tục chia thành nhiều bản tối ưu nhỏ.

    5. ác khối lock(sync) khác cũng gọi vào driver (Dispose, DriverRegistry.Create) ngay khi đang giữ sync, cùng kiểu rủi ro. Mình xem 4 chỗ này.

      Log đã chỉ ra chỗ kẹt, và mình đã sửa trong z350_fix_renametag_deadlock.zip. Mình vẫn chưa build được vì máy mình không có dotnet.

      Log nói gì

      11:44:03.521  RenameTag:437 (thread 39) lấy khoá engine.sync
      11:44:39 → 11:44:59  KẸT 36s … 54s: PollDevice, EvalAlarm, Idx, Schedule,
                           RefreshTrendPens, AlarmSnapshot … đều chờ; chủ khoá = RenameTag
      11:45:02  bạn tắt/chạy lại ScadaWeb

      Hàm RenameTag giữ khoá engine.sync hơn 56 giây mà không nhả. 14 luồng khác (đọc PLC, alarm, vẽ trend, giao diện) đều chờ khoá này, nên cả SCADA đứng. Trong log này không có dòng [ADDTAG] nào, nên lần treo mà log ghi lại xảy ra lúc đổi tên tag, không phải lúc bấm “+ Thêm Tag”. Nhiều khả năng đó là cùng một lỗi với lần bạn gặp trước đó, vì triệu chứng giống nhau.

      Nguyên nhân

      RenameTag đang giữ sync mà lại lấy thêm các khoá khác bên trong: lock (dv) của thiết bị, khoá chương trình Ladder, và thư viện widget. Trong khi đó luồng Ladder hoặc driver giữ chính khoá đó rồi gọi vào engine (như Idx, FindTag) và phải chờ sync. Hai bên giữ khoá của nhau và chờ nhau mãi (deadlock). Log không cho biết chính xác khoá nào, vì lock (dv) và khoá Ladder chưa được theo dõi. Vì vậy đây là suy luận chắc nhưng chưa phải xác nhận 100%.

      Đã sửa

      • RenameTag: chỉ phần dữ liệu của engine (đổi tên, xu hướng, alarm đang báo) nằm trong lock(sync). Phần cập nhật widget, ThingsBoard, mail, AdvanLink, Ladder, script chạy ngoài khoá. Có try/catch ghi log [RENAME] nếu lỗi.
      • RemoveDevice: gọi Dispose driver ngoài lock(sync), cùng kiểu rủi ro.
      • Giữ nguyên các sửa trước (chỉ mục tăng dần, thứ tự khoá Idx/Save, bộ theo dõi khoá).

      Khoá khác còn nằm trong sync

      Còn hai chỗ gọi code driver khi đang giữ sync: tạo driver trong PollDevice và DeviceEdit/UpsertDevice (gọi DriverRegistry). Mình chưa đổi vì thường chỉ khởi tạo. Nếu log lần sau vẫn có chủ khoá = ... ở các hàm này, mình sẽ sửa tiếp.

      Bạn làm giúp

      1. Chép đè 10 file trong zip lên project, build, chạy (x64 như đã nói).
      2. Thử đổi tên một tag, và thử thêm tag bằng tay, khi runtime đang chạy với hơn 2000 tag.
      3. Nếu còn kẹt, gửi mình các dòng [LOCK], [RENAME], [ADDTAG].
      Z350 fix renametag deadlock
    Nội dung chính
      0 Nhận xét
      Tags: C#

      Cùng chuyên mục

      Liên hệ quảng cáo

      Tin mới

        Liên hệ (Contact)

        Tên

        Email *

        Thông báo *

        Tìm kiếm (SEARCH)

        Main Tags

        • ADROID
        • Affiliate + Dropshipping
        • AGC
        • AI
        • analog
        • Apk adroid
        • ASP.NET
        • âm nhạc
        • Âm thanh
        • Âm Thanh Xe Hơi
        • bản đồ địa chính
        • Bản tin xã Vĩnh Kiên
        • Bảo dưỡng xe MG
        • bảo hiểm
        • Bảo vệ môi Trường
        • beckhoff
        • bể phốt
        • Bệnh
        • biến áp xung
        • Biến áp xuyến
        • Biến tần
        • Biến tần KDE300A
        • biến tần Schneider
        • Biến tần Simens
        • biến tần yaskawa
        • blogspot
        • bộ hòa
        • bồn cầu
        • C#
        • C# thiết bị phụ
        • C# web
        • C53 realme
        • các nhà phân phối
        • cad electrical 2019
        • cải tạo
        • cài win
        • camera
        • Chào mừng 8/3
        • Chat gpt
        • Chăm sóc sắc đẹp
        • chế tạo biến tần
        • Chi Bộ
        • Chi Đoàn
        • chỉ huy trưởng
        • chìa
        • Chìa khóa thành công
        • chung tay
        • chuyển đổi số
        • chuyên gia
        • CODE WIN CC
        • CODESYS
        • com ảo
        • Công Đoàn
        • công tác hội
        • Cơ điện tử
        • cp1243-7
        • Crack tia
        • dao diện tia
        • Dạy con ngoan giỏi
        • Dạy con thông minh
        • Dây điện từ
        • DCS
        • Dịch vụ
        • driver
        • Dso138
        • Dự án
        • Đảng - Đoàn thể
        • Đánh bóng ô tô
        • Đào tạo nghề
        • Đào tạo vận hành
        • đẩu tư Bất động sản
        • đầu tư tài chính
        • Điện
        • Điện trở
        • Điện tử công suất
        • điện tường
        • điều khiển nhiệt độ
        • điều tốc
        • Đồ điện sửa chữa
        • Động cơ điện 1 pha
        • Động cơ điện 3 pha
        • Động cơ mua bán
        • động cơ vạn năng
        • đục tường
        • encoder
        • encore
        • Enigma Protector
        • Excel
        • Facebook
        • factory io
        • fasstAPI
        • faststone capture
        • fuxa
        • game đế chế
        • Gia Đình
        • Góc học tập và làm theo lời Bác
        • GOV
        • grafana
        • graphana
        • hàn nhiệt
        • hàn ống
        • Hantek 2c42
        • HIK
        • HMI
        • hmi delta
        • hmi simnes
        • HMI Wedcon
        • Học chức danh
        • học tiếng anh
        • Hội thi
        • IEC
        • IEC 104
        • iec61850
        • IGBT
        • INVT
        • karaoke
        • Kaspersky Internet Security
        • KEP OPC
        • kepopc
        • key win cc oa
        • Khí cụ điện
        • khởi động mềm
        • khởi nghiệp
        • Kích
        • Kích cá
        • km
        • làm đẹp
        • Làm kinh tế giỏi
        • Lập công ty
        • lập trình zen
        • Lịch làm việc
        • Lịch sự
        • liệt não
        • Link kiện điện tử
        • logo simens
        • Lỗi phạt ô tô
        • mạch âm thanh
        • Mạch băm xung
        • Mạch nguồn xung
        • mạch nồi cơm
        • mạng
        • Máy biến áp
        • máy cắt
        • máy giặt
        • máy hàn
        • máy hàn chip
        • máy hàn tig wp 300
        • Máy lọc dầu
        • Máy phát điện
        • Máy phát điện xăng
        • máy tính
        • MG zs
        • Microstation SE
        • mobus
        • MODBUS
        • Module phát âm thanh MP3 DY-SV5W
        • mqtt
        • mua ô tô
        • mường hum
        • My Music
        • nart port
        • nậm ban2
        • next.js
        • nhẫn nhịn
        • node js
        • Note js
        • Nông thôn mới
        • odoo
        • OPC
        • OPC DA
        • opc. matrikon
        • OpenVPN
        • ổn áp
        • pdf
        • phân loại rác
        • Phật dạy
        • phong trào
        • Pid
        • PLC
        • plc abb
        • plc delta
        • Plc emerson
        • plc GE
        • plc LS
        • Plc Mitsubishi
        • PLC Mitsubishi FX1N
        • plc s7 200
        • plc s71200
        • PLC Schneider
        • plc sim avanced
        • plc simens
        • python
        • quản trị tài chính
        • Rapid SCADA
        • Raspberry Pi
        • remote destrop
        • Rơ le bảo vệ
        • Rơ le CMC và studio PSL
        • S7 1200
        • S7 200
        • S7300
        • Sách
        • sách tổ tự động
        • sát hạch lái xe
        • SCR
        • secvo
        • SERVO
        • Sheet nhạc
        • Sim mới
        • sơ đồ bếp từ
        • sơn ô tô
        • SQL server
        • SSR
        • Step ĐC
        • Sửa chữa dc
        • sức khỏe
        • Sưu tầm
        • Tai biến
        • tài khoản Simens
        • Tài liệu kỹ thuật
        • Tailscale
        • Tâm lý
        • Teamviewer
        • tenten
        • thái độ
        • thay bo mạch
        • thay đổi góc nhìn
        • Thể thao
        • thi an toàn
        • Thi đua - Khen thưởng
        • thị trường điện
        • thingboard
        • thingsboard
        • Thông tin đấu thầu
        • Thông tin xử phạt
        • Thời sự
        • thời tiết
        • Thủ thuật máy tính
        • thủy điện
        • thyristor
        • TIA V13 SP2 pro
        • TIA V14
        • tia v15
        • Tia v16
        • Tia V17
        • tia V21
        • Tin tức - Sự kiện
        • tivi
        • touchpad-blocker
        • trạm phát thanh
        • TRIANGLE IEC
        • Trồng cây mừng Đảng mừng xuân 2024
        • tủ điện
        • Tủ lạnh
        • uctra_iso
        • Văn bản - Tài liệu
        • VBS
        • Video
        • Video động. Cơ điện
        • Video quấn động cơ điện
        • vmware
        • Vòng bi
        • vpn
        • Web
        • websever S7 1200
        • wifi
        • wincc
        • WinCC Unified
        • Wondershare Filmora
        • woodwoard
        • word
        • WPF
        • wwin cc
        • xây dựng
        • xây nhà tầng 2
        • xe 2025
        • xe ô tô
        • xem tuổi xây nhà
        • Xiaozhi
        • youtube
        • zenon
        • zoho mail

        Thời tiết hiện tại

        Chat hỗ trợ
        Chat ngay

        Lịch làm việc

          Thông báo

          • Nông thôn mới
          • Phong trào
          • Công tác hội
          • Chăm sóc sắc đẹp
          • Chuyển đổi số

          Đọc nhiều

          • Bán fe từ E I
            Bán fe từ E I 9
            17 thg 9, 2017

            Bán lõi thép silic chất lượng cao được nhập khẩu từ nhật. Ngoài ra chúng tôi cung cấp đủ gông từ, cốt nhựa đủ cho quý khách quấn máy biến áp...

          • link const TB_HOST = "http://IP_MAY_CHAY_THINGSBOARD:8080"; . cấu hình node js gửi đến thingboard
            link const TB_HOST = "http://IP_MAY_CHAY_THINGSBOARD:8080"; . cấu hình node js gửi đến thingboard
            03 thg 2, 2026

             À 👍 mình hiểu đúng chỗ bạn đang bị rối rồi . Giờ mình nói rõ ràng – tách bạch – nhìn là hiểu ngay nhé. 🚨 ĐIỂM SAI LỚN TRONG CODE BẠN ...

          • Ebook Kỹ thuật quấn dây máy biến áp, động cơ vạn năng, động cơ điện 1 pha, 3 pha
            Ebook Kỹ thuật quấn dây máy biến áp, động cơ vạn năng, động cơ điện 1 pha, 3 pha 2
            13 thg 9, 2018

            Ebook Kỹ thuật quấn dây máy biến áp, động cơ vạn năng, động cơ điện 1 pha, 3 pha có cấu trúc gồm 8 chương trình bày những nội dung ...

          • Hướng dẫn reset factory HMI basic của siemens [Guide Recovery HMI 2nd Genneration of Siemens]
            Hướng dẫn reset factory HMI basic của siemens [Guide Recovery HMI 2nd Genneration of Siemens] 2
            22 thg 2, 2019

          • các mạch kích cá D718
            các mạch kích cá D718 1
            13 thg 9, 2018

          • truyền được qua mạng hệ thống
            truyền được qua mạng hệ thống
            26 thg 10, 2026

              So sánh khả năng truyền qua Internet của MQTT và Socket.IO Có, Socket.IO hoàn toàn có thể truyền qua mạng Internet (giống như MQTT), như...

          Có thể bạn quan tâm

            Ban biên tập

            Thế Hương

            ........

            ...........

            Thống kê

            Số người truy cập: Tổng lượt truy cập:
            Liên hệ quảng cáo
            Trang chủ
            Hotline: 0989.000.420
            Liên hệ
            RSS
            Lên đầu trang

            Cơ điện Huế Hương - Yên Bình -Yên Bái

            Địa chỉ: Xã Vĩnh Kiên - Yên Bình - Yên Bái
            Email: vuhuong.tbc@gmail.com
            Liên hệ: 0989000420

            Template blogspot bán hàng và bất động sản