Retrieving the COM class factory for component with CLSID {29131537-2EED-1069-BF5D-00DD011186B7} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
ผมก็นึกว่าน่าจะใช้งานได้ พอลองเปลี่ยน ตรงชื่อ username เป็นของ user คนอื่น สมมติชื่อ นายกนก
แล้วลอง run ดู มันจะขึ้น error ว่า ตรงส่วน username ไม่ใช่ server
ผมก็งงๆ ก็มันให้ใส่ username ลงไปทำไมฟ้องว่า username ไม่ใช่ server
แต่ที่แปลกกว่า ก็คือ แทนที่มันจะฟ้องว่าเป็น 'นายกนก is not server'
มันกลับ error ว่า 'Aod47 is not server' แทน (อันนี้ผมสมมติชื่อเอานะ)
ซึ่งก็คือ มันไปใช้ชื่อที่ default ไว้ที่ตัว client
ผมเลยคิดว่า ต้องหาวิธี Switch User File ID ให้ได้ ก็น่าจะแก้ไขปัญหานี้ได้
ตัว server ที่ใช้ทดสอบ (และจะใช้งานจริงด้วย) เป็น Windows 2008 R2 64 bit ครับ
ถ้าเอา code ในส่วน switch user id ออก จะ run ผ่าน ส่งเมล์ได้ตามปกติครับ
ผมเลยไม่แน่ใจว่า มันจะเป็นเพราะ 64 bit หรือไม่
Code (C#)
// เอาส่วนนี้ออก run ได้ครับ
NotesRegistration reg = new NotesRegistration();
RegistrationServer = this.txtNotesServer.Text.ToString();
SwitchToID("C:\Lotus\Notes\Data\enduser.id", "notespassword");
กระทู้ที่ผมทำ link ไป เจ้าของกระทู้เขา comment กระทู้ตัวเองไว้ดังนี้ครับ Code
For me the issue is resolved after creating two different c# classes to access the LotusNotesDB.
This will help the framework to create two different objects when accessing NotesDB and so
there is no conflict of locking resource. Creating two different c# classes in the sense,
creating two different C# implementations for each application seperately
(Windows Service and WebApplication).
ผมก็เลยกะว่าจะลองเขียนเป็น class ดู เผื่อมันจะแก้ปัญหาได้ครับ