การติดตามแอปพลิเคชันภายในโดยใช้ ASP.NET Web API (การบันทึก)

ขณะนี้ฉันมี Web API จำนวนมากที่ใช้งานโดยแอปพลิเคชันต่างๆ API ทั้งหมดใช้ ASP.NET Web API 2 พร้อมเฟรมเวิร์ก 4.6 .NET ฉันต้องการที่จะติดตามแอปพลิเคชันต่างๆ ทั้งหมดที่ใช้ API ที่เฉพาะเจาะจง

ตัวอย่าง:

สมมติว่าฉันมี API ต่อไปนี้:

  • API พนักงาน - รับพนักงานทั้งหมด

และฉันมีแอปพลิเคชันต่อไปนี้ที่เรียก Employees API

  • ระบบการจัดการพนักงาน - อยู่ที่ /intranet/employee/add
  • แบบฟอร์มขอลาหยุด - อยู่ที่ /intranet/timeoff.aspx

ระบบการจัดการพนักงาน เรียก Employees API โดยใช้ HttpClient ในโค้ด C#

แบบฟอร์มขอลาหยุด เรียก API ของพนักงาน โดยใช้การเรียก ajax ใน JavaScript


ฉันต้องการเก็บบันทึกของแอปพลิเคชันทั้งหมดที่ใช้ Web API และควรคำนึงถึงการดำเนินการที่แอปพลิเคชันเหล่านั้นเรียกใช้ วิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร?

มีวิธีรับ URI ของผู้โทรหรือไม่

จาก Web API เป็นไปได้หรือไม่ที่จะรู้ได้ว่า /intranet/timeoff.aspx กำลังเรียกใช้การดำเนินการเพิ่มพนักงานใน Employee API


person Aaron    schedule 16.12.2016    source แหล่งที่มา


คำตอบ (2)


ฉันเชื่อว่าคุณมีทางเลือกไม่กี่ทาง

  1. เพิ่มค่าส่วนหัวเพื่อระบุแอปพลิเคชันไปยังคำขอแต่ละรายการจากแอปพลิเคชัน

  2. เพิ่มการอ้างสิทธิ์ที่ระบุแอปพลิเคชันลงในโทเค็นความปลอดภัย (สมมติว่าคุณกำลังรักษาความปลอดภัยคำขอ)

  3. เพิ่มพารามิเตอร์แบบสอบถามสำหรับแอปพลิเคชันที่ร้องขอลงในแต่ละคำขอ

person Kaizen Programmer    schedule 16.12.2016

หากคุณสามารถควบคุมแอปพลิเคชันที่เรียก API ของคุณได้ Michael_B จะเสนอคำแนะนำดีๆ ถ้าไม่เช่นนั้นคุณอาจต้องพิจารณาข้อมูลอ้างอิงบางอย่างเช่นที่อยู่ IP - ดู วิธีรับ IpAddress และ UserAgent ใน ASP.NET Web API รับวิธีการ อย่างไรก็ตาม แม้ว่าค่านั้นอาจไม่ใช่ IP ไคลเอ็นต์ แต่เป็นค่าบางอย่างที่อยู่ระหว่าง IP กับ API ของคุณ

อย่างไรก็ตาม เนื่องจากคุณใช้ Web API คุณอาจพิจารณาเรียกใช้คำขอทั้งหมดผ่าน DelegatingHandler ก่อนอื่น เขียนข้อมูลผู้โทร ฯลฯ ลงในบันทึกจากตรงนั้น จากนั้นให้คำขอดำเนินต่อไปยังตัวควบคุมที่เหมาะสม ดู http://arcware.net/logging-web-api-requests/

person Stinky Towel    schedule 16.12.2016