26
วิธีแก้ปัญหาที่ดีที่สุดสำหรับลูกค้า WCF `using` ปัญหาบล็อกคืออะไร?
ฉันชอบอินสแตนซ์ไคลเอ็นต์บริการ WCF ของฉันภายในusingบล็อกเพราะมันเป็นวิธีมาตรฐานในการใช้ทรัพยากรที่ใช้IDisposable: using (var client = new SomeWCFServiceClient()) { //Do something with the client } แต่ดังที่กล่าวไว้ในบทความ MSDN นี้การตัดไคลเอ็นต์ WCF ในusingบล็อกอาจปิดบังข้อผิดพลาดใด ๆ ที่ทำให้ไคลเอ็นต์อยู่ในสถานะบกพร่อง (เช่นหมดเวลาหรือปัญหาการสื่อสาร) เรื่องสั้นสั้น ๆ เมื่อเรียกใช้ Dispose () เมธอด Close () ของไคลเอ็นต์จะเริ่มทำงาน แต่จะโยนข้อผิดพลาดเนื่องจากอยู่ในสถานะบกพร่อง ข้อยกเว้นดั้งเดิมถูกหลอกลวงโดยข้อยกเว้นที่สอง ไม่ดี. วิธีแก้ปัญหาที่แนะนำในบทความ MSDN คือการหลีกเลี่ยงการใช้usingบล็อกอย่างสมบูรณ์และเพื่อยกตัวอย่างลูกค้าของคุณและใช้สิ่งเหล่านี้แทน: try { ... client.Close(); } catch (CommunicationException e) { ... client.Abort(); …
404
c#
vb.net
wcf
using
wcf-client