شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
InvalidRLPolicy
کد خطا
policies.resetquota.InvalidRLPolicy
بدنه پاسخ به خطا
{ "fault": { "faultstring": "Invalid rate limit policy quota_policy_name", "detail": { "errorcode": "policies.resetquota.InvalidRLPolicy" } } }
نمونه پیام خطا
{
"fault": {
"faultstring": "Invalid rate limit policy MyQuotaPolicy",
"detail": {
"errorcode": "policies.resetquota.InvalidRLPolicy"
}
}
}
علت
اگر خط مشی Quota مشخص شده در عنصر <Quota>
خط مشی Reset Quota در پراکسی API تعریف نشده باشد، رخ می دهد. عنصر <Quota>
اجباری است و خط مشی سهمیه هدف را مشخص می کند که شمارنده آن باید از طریق خط مشی Reset Quota به روز شود. این خط مشی سهمیه هدف باید در همان پروکسی API ایجاد و تعریف شود و باید در طول جریان در دسترس باشد.
به عنوان مثال، فرض کنید عنصر <Quota>
مطابق شکل زیر تعریف شده است، اما اگر MyQuotaPolicy
در API Proxy تعریف نشده باشد، خطای بالا را دریافت می کنید.
<Quota name="MyQuotaPolicy">
تشخیص
نام خط مشی سهمیه نامعتبر مشخص شده در خط مشی بازنشانی سهمیه را شناسایی کنید. می توانید نام خط مشی Quota را از رشته خطا پیدا کنید. به عنوان مثال، در رشته خطای زیر، نام خط مشی Quota
MyQuotaPolicy:
"faultstring": "Invalid rate limit policy MyQuotaPolicy"
هر یک از سیاستهای Reset Quota را در پراکسی API که در آن شکست رخ داده است، بررسی کنید. خط مشی مشخصی را شناسایی کنید که در آن خط مشی سهمیه مشخص شده در عنصر اجباری
<Quota>
با نام مشخص شده در مرحله 1 در بالا مطابقت دارد.به عنوان مثال، خط مشی Reset Quota زیر یک خط مشی Quota به نام
MyQuotaPolicy
را مشخص می کند که با آنچه در رشته خطا است مطابقت دارد:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
تعیین کنید که آیا این خط مشی سهمیه در همان پروکسی API ایجاد و تعریف شده است. اگر خط مشی Quota در همان پراکسی API وجود نداشته باشد، دلیل این خطا است.
در مثال نشان داده شده در بالا، قرار است سیاست Quota
MyQuotaPolicy
قبل از اجرای سیاست Reset QuotaReset_Quota_Demo
در جریان وجود داشته باشد.از آنجایی که Quota Policy
MyQuotaPolicy
در جریان وجود ندارد، کد خطا را دریافت خواهید کرد:
"errorcode": "policies.resetquota.InvalidRLPolicy"
قطعنامه
اطمینان حاصل کنید که خط مشی سهمیه اعلام شده در عنصر <Quota>
در پروکسی API تعریف شده است. این خط مشی سهمیه هدف باید هنگام اجرای خط مشی Reset Quota در دسترس باشد.
FailedToResolveAllowCountRef
کد خطا
policies.resetquota.FailedToResolveAllowCountRef
بدنه پاسخ به خطا
Failed to resolve allow count reference reference_name for identifier identifier_name in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision: revision_number;Environment:env_name;Organization:org_name
نمونه پیام خطا
Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo
خطای بازگشتی به کلاینت به سادگی این خواهد بود: policies.ratelimit.QuotaViolation
.
علت
این خطا در صورتی رخ می دهد که ارجاع به متغیر حاوی تعداد مجاز در عنصر <Allow>
خط مشی قابل حل نباشد. این عنصر اجباری است و میزان کاهش سهمیه شمار را مشخص می کند.
تشخیص
خط مشی Reset Quota را در جایی که خطا رخ داده است و نام متغیر مرجعی را که قابل حل نیست شناسایی کنید. شما می توانید هر دو مورد را در پاسخ خطا پیدا کنید.
به عنوان مثال، در رشته خطای زیر، نام سیاست
ResetQuota
و مرجعrequest.header.allowcount
است:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
در XML خط مشی Reset Quota ناموفق، بررسی کنید که نام متغیر مرجع استفاده شده با نام مرجع مشخص شده در پاسخ خطا مطابقت داشته باشد (مرحله 1 در بالا).
به عنوان مثال، خط مشی زیر عنصر را با مرجع به نام
request.header.allowcount
تنظیم می کند که با خطای موجود مطابقت دارد:<ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota"> <DisplayName>ResetQuota</DisplayName> <Properties/> <Quota name="MyQuotaPolicy"> <Identifier name="identifierName"> <Allow ref="request.header.allowcount"/> </Identifier> </Quota> </ResetQuota>
تعیین کنید که آیا متغیر مرجع در جریانی که در آن خط مشی Reset Quota اجرا می شود، تعریف شده و موجود است یا خیر.
اگر متغیر یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می شود موجود نیست) یا
- قابل حل نیست (تعریف نشده است)
پس این دلیل خطا است.
در مثال نشان داده شده در بالا، مقدار تعداد مجاز در عنصر
<Allow>
قرار است از سرصفحه درخواست با نام allowcount بازیابی شود. با این حال، Edge قادر به حل و فصل request.header.allowcount نیست. اگر تعداد مجاز سرصفحه به عنوان بخشی از درخواست API ارسال نشود، این اتفاق میافتد.در اینجا یک نمونه درخواست API وجود دارد که از تعداد مجاز هدر به عنوان بخشی از درخواست عبور نمی کند:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
از آنجا که تعداد مجاز سرصفحه به عنوان بخشی از درخواست ارسال نمی شود، متغیر request.header.allowcount مورد استفاده در عنصر
<Allow>
در خط مشی Reset Quota بالا تعریف نشده است و بنابراین قابل حل نیست. بنابراین شما پاسخ خطا را دریافت خواهید کرد:Failed to resolve allow count reference request.header.allowcount for identifier identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota; Revision:10;Environment:test;Organization:demo
قطعنامه
اطمینان حاصل کنید که متغیر ارجاع شده در عنصر <Allow>
در جریان خاص، جایی که سیاست Reset Quota اجرا میشود، تعریف شده و در دسترس است.
برای تصحیح مثالی که در بالا نشان داده شده است، میتوانید درخواست را طوری تغییر دهید که هدر تعداد مجاز را مطابق شکل زیر درج کند:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"
FailedToResolveRLPolicy
کد خطا
policies.resetquota.FailedToResolveRLPolicy
بدنه پاسخ به خطا
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
نمونه پیام خطا
{
"fault": {
"faultstring": "Failed to resolve rate limit policy",
"detail": {
"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
}
}
}
علت
این خطا در صورتی رخ می دهد که متغیر ارجاع شده توسط ویژگی ref
در عنصر <Quota>
قابل حل نباشد.
برای مثال، اگر ویژگی ref
به عنوان request.header.quotapolicy
در عنصر <Quota>
تنظیم شده باشد اما در جریان پروکسی API موجود نباشد، خطای بالا را دریافت میکنید.
<Quota ref="request.header.quotapolicy">
تشخیص
هر یک از خطمشیهای Reset Quota را در پراکسی API که در آن شکست رخ داده است، بررسی کنید و خطمشی Reset Quota را شناسایی کنید، جایی که نام متغیر مرجع مشخصشده در عنصر
<Quota>
به درستی قابل حل نیست.تعیین کنید که آیا متغیر در جریانی که در آن خط مشی Reset Quota اجرا می شود، تعریف شده و موجود است یا خیر.
اگر متغیر یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که سیاست اجرا می شود موجود نیست) یا
- قابل حل نیست (تعریف نشده است)
پس این دلیل خطا است.
در مثال نشان داده شده در زیر، نام سیاست سهمیه هدف قرار است از سرصفحه درخواست به نام quotapolicy بازیابی شود. با این حال، Edge قادر به حل و فصل request.header.quotapolicy نیست. اگر سهمیه هدر به عنوان بخشی از درخواست API ارسال نشود، این اتفاق میافتد.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo"> <DisplayName>Reset_Quota_Demo</DisplayName> <Properties/> <Quota ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
در اینجا یک نمونه درخواست API وجود دارد که از سهمیه هدر به عنوان بخشی از درخواست عبور نمی کند:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
از آنجا که سهمیه سرصفحه به عنوان بخشی از درخواست ارسال نمی شود، مرجع request.header.quotapolicy استفاده شده در عنصر
<Quota>
در خط مشی Reset Quota بالا تعریف نشده است و قابل حل نیست. در نتیجه، پاسخ خطا را دریافت می کنید:"errorcode": "policies.resetquota.FailedToResolveRLPolicy"
قطعنامه
اطمینان حاصل کنید که ویژگی ref
ارجاع شده در عنصر <Quota>
در زمان اجرا حل می شود و در جریان خاص، جایی که سیاست Reset Quota اجرا می شود، در دسترس است.
برای تصحیح مثالی که در بالا نشان داده شده است، میتوانید درخواست را تغییر دهید تا هدر سهمیهبندی را مطابق شکل زیر تغییر دهید:
curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"