คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
InvalidMessageWeight
รหัสข้อผิดพลาด
policies.ratelimit.InvalidMessageWeight
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": {jdoe "faultstring": "Invalid message weight value [invalid_value]", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากค่าที่ระบุสำหรับองค์ประกอบ <MessageWeight> ผ่านตัวแปรโฟลว์ไม่ถูกต้อง (ค่าที่ไม่ใช่จำนวนเต็ม)
ตัวอย่างเช่น หากค่าของตัวแปรโฟลว์ที่ระบุสําหรับองค์ประกอบ <MessageWeight>
คือ 1.5 (ค่าที่ไม่ใช่จํานวนเต็ม) ระบบจะแสดงข้อผิดพลาด
การวินิจฉัย
ระบุค่าที่ไม่ถูกต้องที่ใช้สำหรับองค์ประกอบ
<MessageWeight>ในนโยบาย Spike Arrest คุณดูข้อมูลนี้ได้ในองค์ประกอบfaultstringของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ค่าที่ไม่ถูกต้องที่ใช้สำหรับองค์ประกอบ<MessageWeight>คือ1.5"faultstring": "Invalid message weight value 1.5"ตรวจสอบนโยบายการป้องกันการเพิ่มขึ้นของทราฟิกทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด อาจมีนโยบายการควบคุมอัตราการเข้าชมที่เพิ่มขึ้นอย่างน้อย 1 รายการซึ่งระบุองค์ประกอบ
<MessageWeight>ตัวอย่างเช่น นโยบายต่อไปนี้จะระบุค่าของ
<MessageWeight>ผ่านตัวแปรโฟลว์ที่ชื่อmessage_weight:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>กำหนดค่าของตัวแปรที่ใช้ในองค์ประกอบ
<MessageWeight>ของ นโยบายการควบคุมอัตราการเข้าชมที่เพิ่มขึ้นที่ระบุ ค่าของตัวแปรโฟลว์สามารถดึงข้อมูลจากส่วนหัว HTTP, พารามิเตอร์การค้นหา, เพย์โหลดคำขอ XML หรือ JSON หรือกำหนดไว้ในนโยบายอื่น- ค้นหาโค้ดภายในพร็อกซี API ซึ่งเป็นที่ที่กำหนดตัวแปรเป็นครั้งแรก
- เมื่อทราบแล้วว่านโยบายใดที่กำหนดและ ป้อนค่าตัวแปรเป็นอันดับแรก ให้ตรวจสอบวิธีตั้งค่าตัวแปร
- หากค่าของตัวแปรโฟลว์ตรงกับค่าที่ระบุในขั้นตอน #1 ด้านบน แสดงว่าค่าดังกล่าวเป็นสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่ามีการใช้นโยบาย JavaScript ก่อนนโยบายการควบคุมอัตราการเข้าชมที่เพิ่มขึ้น เพื่อตั้งค่าตัวแปร
message_weightตามวิธีการของคำขอตามที่แสดงด้านล่างvar verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }โปรดสังเกตว่าค่าของตัวแปร
message_weightคือ1.5ซึ่งเป็นค่าที่ไม่ถูกต้อง (ไม่ใช่จำนวนเต็ม)
ความละเอียด
ตรวจสอบว่าค่าขององค์ประกอบ MessageWeight เป็นค่าที่ถูกต้อง (จำนวนเต็ม
ค่า)
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขค่าของตัวแปร
message_weight ใน JavaScript ให้เป็นจำนวนเต็มได้โดยทำดังนี้
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
รหัสข้อผิดพลาด
policies.ratelimit.FailedToResolveSpikeArrestRate
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate"
}
}
}สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากการอ้างอิงตัวแปรที่มีการตั้งค่าอัตราภายในองค์ประกอบ <Rate> ไม่สามารถแก้ไขเป็นค่าภายในนโยบาย Spike Arrest ได้ องค์ประกอบนี้เป็นองค์ประกอบที่จำเป็นและใช้เพื่อระบุอัตราการหยุดการเพิ่มขึ้นอย่างรวดเร็วในรูปแบบ {int}pm หรือ {int}ps เช่น {int}pm อาจเป็น 500pm ซึ่งหมายถึงการโทร 500 ครั้งต่อนาที ในทำนองเดียวกัน ค่า 10ps หมายถึง 10 ครั้งต่อวินาที
การวินิจฉัย
ระบุนโยบายการจำกัดอัตราการเข้าชมที่เกิดข้อผิดพลาดและชื่อของ การอ้างอิงที่แก้ไขได้อย่างไม่ถูกต้อง คุณจะเห็นทั้ง 2 รายการนี้ ในองค์ประกอบ faultstring ของการตอบกลับข้อผิดพลาด
ตัวอย่างเช่น ใน faultstring ต่อไปนี้ ชื่อนโยบายคือ
SpikeArrest_AuthProxyและการอ้างอิงคือrequest.header.rate"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"ใน XML ของนโยบายการควบคุมอัตราการโทรที่ล้มเหลว ให้ตรวจสอบว่าชื่อของการอ้างอิง ที่ใช้ตรงกับชื่อการอ้างอิงที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ** **
ตัวอย่างเช่น นโยบายต่อไปนี้จะตั้งค่าองค์ประกอบ
ที่มีการอ้างอิง ชื่อ request.header.rateซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>พิจารณาว่ามีการกำหนดตัวแปรและพร้อมใช้งานในโฟลว์ที่นโยบาย Spike Arrest กำลังดำเนินการอยู่หรือไม่
หากตัวแปรเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการ บังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างที่แสดงด้านบน ค่าของอัตราการจับการเพิ่มขึ้นในองค์ประกอบ
<Rate>ควรดึงมาจากส่วนหัวของคำขอที่ชื่อ rate อย่างไรก็ตาม Edge ไม่สามารถแก้ไข request.header.rate ได้ กรณีนี้จะเกิดขึ้น หากไม่ได้ส่งส่วนหัว rate เป็นส่วนหนึ่งของคำขอ APIตัวอย่างคำขอ API ที่ไม่ได้ส่งส่วนหัว rate เป็นส่วนหนึ่งของคำขอมีดังนี้
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"เนื่องจากไม่ได้ส่งส่วนหัว rate เป็นส่วนหนึ่งของคำขอ การอ้างอิง request.header.rate ที่ใช้ในองค์ประกอบ
<Rate>ในนโยบายการป้องกันการเพิ่มขึ้นของทราฟิกข้างต้นจึงไม่ได้รับการกำหนดและไม่สามารถแก้ไขได้ ดังนั้นคุณจะได้รับรหัสข้อผิดพลาดต่อไปนี้policies.ratelimit.FailedToResolveSpikeArrestRate
ความละเอียด
ตรวจสอบว่าตัวแปรที่อ้างอิงในองค์ประกอบ <Rate> มีอยู่/ได้รับการกำหนด
และพร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจง ซึ่งมีการดำเนินการตามนโยบายการจำกัดอัตราการโทร
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขคำขอให้รวมส่วนหัว rate ดังที่แสดงด้านล่าง
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"