ดังนั้นเราจึงได้ผลิตบริการ windows เพื่อป้อนข้อมูลไปยังแอปพลิเคชันไคลเอนต์ของเราและทุกอย่างจะดีมาก ไคลเอนต์ได้มาพร้อมกับการร้องขอการกำหนดค่าที่สนุกสนานซึ่งต้องใช้สองอินสแตนซ์ของบริการนี้ที่ทำงานบนเซิร์ฟเวอร์เดียวกันและกำหนดค่าให้ชี้ไปที่ฐานข้อมูลแยกกัน
จนถึงตอนนี้ฉันยังไม่สามารถทำให้สิ่งนี้เกิดขึ้นได้และหวังว่าสมาชิก stackoverflow เพื่อนของฉันอาจให้คำแนะนำบางอย่างว่าทำไม
การตั้งค่าปัจจุบัน:
ฉันได้ตั้งค่าโครงการที่มีบริการ windows แล้วเราจะเรียกมันว่า AppService นับจากนี้เป็นต้นไปและไฟล์ ProjectInstaller.cs ที่จัดการขั้นตอนการติดตั้งแบบกำหนดเองเพื่อตั้งชื่อบริการตามคีย์ใน App.config เช่นนั้น :
this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
ในกรณีนี้ Util เป็นเพียงคลาสสแตติกที่โหลดชื่อบริการจากไฟล์กำหนดค่า
จากนี้ไปฉันได้ลองสองวิธีที่แตกต่างกันในการติดตั้งทั้งสองบริการและทั้งคู่ล้มเหลวในลักษณะเดียวกัน
วิธีแรกเพียงแค่ติดตั้งสำเนาแรกของบริการคัดลอกไดเร็กทอรีที่ติดตั้งและเปลี่ยนชื่อจากนั้นเรียกใช้คำสั่งต่อไปนี้หลังจากแก้ไขการกำหนดค่าแอปเพื่อเปลี่ยนชื่อบริการที่ต้องการ:
InstallUtil.exe /i AppService.exe
เมื่อไม่ได้ผลฉันพยายามสร้างโครงการติดตั้งที่สองแก้ไขไฟล์กำหนดค่าและสร้างตัวติดตั้งตัวที่สอง เมื่อฉันรันโปรแกรมติดตั้งมันทำงานได้ดี แต่บริการไม่ปรากฏใน services.msc ดังนั้นฉันจึงรันคำสั่งก่อนหน้ากับฐานรหัสที่สองที่ติดตั้ง
ทั้งสองครั้งฉันได้รับผลลัพธ์ต่อไปนี้จาก InstallUtil (เฉพาะส่วนที่เกี่ยวข้อง):
เรียกใช้การติดตั้งที่ทำธุรกรรม
เริ่มขั้นตอนการติดตั้งของการติดตั้ง
การติดตั้งบริการ App Service Two ... Service App Service Two ได้รับการติดตั้งเรียบร้อยแล้ว การสร้าง EventLog source App Service Two ในแอปพลิเคชันบันทึก ...
เกิดข้อผิดพลาดระหว่างขั้นตอนการติดตั้ง System.NullReferenceException: การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของอ็อบเจ็กต์
ขั้นตอนการย้อนกลับของการติดตั้งกำลังเริ่มต้นขึ้น
การกู้คืนบันทึกเหตุการณ์เป็นสถานะก่อนหน้าสำหรับแหล่งที่มา App Service Two Service App Service Two กำลังถูกลบออกจากระบบ ... Service App Service Two ถูกลบออกจากระบบเรียบร้อยแล้ว
ขั้นตอนการย้อนกลับเสร็จสมบูรณ์
การติดตั้งที่ทำธุรกรรมเสร็จสมบูรณ์แล้ว การติดตั้งล้มเหลวและดำเนินการย้อนกลับแล้ว
ขออภัยสำหรับโพสต์ที่ยืดยาวต้องการให้แน่ใจว่ามีข้อมูลที่เกี่ยวข้องเพียงพอ ส่วนที่ฉันนิ่งงันจนถึงตอนนี้ก็คือมันระบุว่าการติดตั้งบริการเสร็จสมบูรณ์และหลังจากนั้นจะสร้างซอร์ส EventLog ที่ดูเหมือนว่า NullReferenceException จะถูกโยนทิ้ง ดังนั้นหากใครรู้ว่าฉันทำอะไรผิดหรือมีแนวทางที่ดีกว่านี้จะได้รับการชื่นชมมาก
http://journalofasoftwaredev.wordpress.com/2008/07/16/multiple-instances-of-same-windows-service/
. คุณสามารถแทรกโค้ดลงในโปรแกรมติดตั้งเพื่อรับชื่อบริการที่คุณต้องการเมื่อคุณเรียกใช้ installutil