ฉันเรียบเรียงคำถามของฉันใหม่แล้ว
จากโค้ดฝั่งเซิร์ฟเวอร์ของบริการ WCF ของฉัน ฉันต้องการแคชตัวแปรบางตัว ตัวแปรเหล่านี้จำเป็นต้องใช้ตลอดวงจรการใช้งานของการเรียกใช้บริการหนึ่งครั้ง ฉันไม่ต้องการให้พวกเขาในทุกการเรียกลายเซ็นวิธีการที่อาจใช้ในตรรกะของบริการ
หากเป็นแอปพลิเคชันบนเว็บ ฉันจะใช้การจัดการเซสชัน แต่นี่อยู่ที่ฝั่งโค้ดเซิร์ฟเวอร์ ฉันจะ 'แคช' ค่าเหล่านี้ต่อการเรียกใช้บริการ แล้วกำจัดทิ้งเมื่อบริการเสร็จสิ้นได้อย่างไร
สารละลาย:
ประเด็นนี้คือเพื่อติดตามว่าการเรียกใช้บริการใดมีข้อผิดพลาดในเครื่องมือติดตามข้อบกพร่อง ดังนั้นในที่สุดฉันก็ทำสิ่งต่อไปนี้:
public class MyService: IMyService
{
public String ServiceLogic(string var1, string var2, string id)
{
try{
DoingStuff.DoMoreStuff();
}
catch(exception ex)
{
var trapper = MyCustomErrorTrap(var1,var2);
throw new faultexpection<MyCustomErrorTrap>(trapper);
}
}
}
Public static class DoingStuff
{
public static void DoMoreStuff()
{
try{
if(blah.toString())
........
}
catch(exception ex)
{
throw;
}
}
}
ด้วยการอนุญาตให้วิธีการเรียกหลักดักจับข้อยกเว้นทั้งหมด ฉันจึงสามารถใช้ตัวแปรสองตัวที่ฉันต้องการที่ระดับบนสุดได้