TOP NEWS

Isocare Knowledge Management การพัฒนาและการประยุกต์ใช้ระบบการจัดการความรู้ของฝ่ายพัฒนาซอฟท์แวร์ บริษัท ไอโซแคร์ ซิสเตมส์ จำกัด

วันศุกร์ที่ 5 เมษายน พ.ศ. 2562

Coop.Pure12.5 : Bug ร้ายแรงจากการใช้ DataWindow.net Function .Retrieve() ที่ไม่ได้ทำ Retrieve Option รองรับให้ตรง ผ่าน C# ตรงๆ

Coop.Pure12.5 : Bug ร้ายแรงจากการใช้ DataWindow.net
Function .Retrieve() ที่ไม่ได้ทำ Retrieve Option รองรับให้ตรง ผ่าน C# ตรงๆ

เคส กรณี ศึกษา Site NAN

ที่หน้าการเงินประมวลผล มีการ เรียก หน้าจอ

ใน LoadBegin ทุกครั้งที่เปิดหน้าจอเรียก
++
               DwUser.SetTransaction(sqlca);
               DwUser.Retrieve(state.SsCoopId, state.SsWorkDate);

ซึ่ง Data Windows.Net นี้ เมื่อเรียก function นี้จะทำให้มีปัญหา เพราะ Retrieve
( โดยที่ Data Windows.Net ไม่ได้กำหนด Argument รองรับให้ตรง กับ C# ที่เรียก


             
พอ run หน้าจอ มาถึงบรรทัดนี้ .Net จะเข้า WerFault Error
ถึงแม้ Try Catch ทำให้ เกิด Error ค้างใน App Pool




ประกอบกับหน้านี้มีการทำ Process ซึ่งใช้ Timer ในการ Refresh
ดึงข้อมูลจึงทำให้เพื่อ Error เป็น ตามจำนวนครั้งที่ Refresh ยิ่งทำให้ App Pool
ตายเร็วขึ้นเมื่อกด runProcess

เมื่อ Run ไปอีก ครั้ง 2 - 5 ครั้ง App Pool ก็จะ Stop Auto
ต้องใช้ คำสั่ง

SET PATH=%windir%\system32\inetsrv;%PATH%
appcmd start apppool /apppool.name:%PROJECT%.saving

แบบ Command หรือ ไป start ที่ IIS => App pool จึงจะกลับมาทำงานปกติ

แนวทางแก้ไข ต้อง Comment Code ออก สถานเดียว


ดังนั้นตรวจสอบ หน้าจออื่นๆ ที่เรียกใช้กรณีนี้ ต้อง Comment
หรือ แก้ไข ให้ Retrieve ตรงกับที่กำหนดใน DataWindows.Net ด้วยนะครับ
เพราะมีผลกับการที่ App Pool จะตาย

วิธีป้องกันเฉพาะหน้า

Set Scheduler ให้ Auto Start App Pool ไว้
โดยให้เรียกจาก C:\GCOOP_ALL\CORE\1.IIS.CORE.start.ApplicationPool.bat
ตั้งไว้ ทุก ๆ 5 นาที แก้ขัดไปได้บ้าง

หรือ เอา C:\GCOOP_ALL\CORE\IIS.Force.Start.AppPool.xml ไป import task ที่ Windows Scheduler ได้เลย โดยกำหนด User ใหม่ให้ตรงกับเครื่องนั้นๆ

0 ความคิดเห็น: