사용자의 Jwt 클레임 데이터를 기반으로 Azure API 정책 속성을 설정할 수 있어야합니다. 나는 counter-key와 increment-condition 같은 것들에 문자열 값을 설정할 수 있었지만 모든 속성을 설정할 수는 없었다. 내가 좋아하는 일을 상상 다음Azure APIM 정책 편집기
Error in element 'rate-limit-by-key' on line 98, column 10: The 'calls' attribute is invalid - The value '@((int) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/LimitRate/Limit", "5"))' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:int' - The string '@((int) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/LimitRate/Limit", "5"))' is not a valid Int32 value.
나는 심지어 문제가 문자열 매개 변수를 설정이 있습니다
는<rate-limit-by-key
calls="@((int) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/LimitRate/Limit", "5"))"
renewal-period="@((int) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/LimitRate/Duration/InSeconds", "60"))"
counter-key="@((string)context.Variables["Subject"])"
increment-condition="@(context.Response.StatusCode == 200)"
/>
그러나 나는 다음과 같은 오류가 나는 정책을 저장할 때 일부 유효성 검사가 일어나고있는 것 같습니다
:<quota-by-key
calls="10"
bandwidth="100"
renewal-period="@((string) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/Quota/RenewalPeriod", "P00Y00M01DT00H00M00S"))"
counter-key="@((string)context.Variables["Subject"])"
/>
나는 시도하고 정책을 저장할 때 다음을 준다 (엄격한 형식의 하나이기는하지만)3210
Error in element 'quota-by-key' on line 99, column 6: @((string) context.Variables["IdentityToken"].AsJwt().Claims.GetValueOrDefault("/Quota/RenewalPeriod", "P00Y00M01DT00H00M00S")) is not in a valid format. Provide number of seconds or use 'PxYxMxDTxHxMxS' format where 'x' is a number.
문자열 변환이 아닌 @ {return 5}, @ (5) 등의 다양한 변형 캐스팅을 시도했지만 저장 시간에 일부 유효성 검사가 발생하는 것으로 보입니다. 그만둬.
내 API에 추가하는 것이 유용한 기능이라고 생각하여이 문제를 해결할 수 있습니까?