Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
I den här artikeln beskrivs syntaxen för principuttryck i C# 7. Varje uttryck har åtkomst till:
- Den implicit tillhandahållna kontextvariabeln .
- En tillåten delmängd av .NET Framework-typer.
Syntax
-
Uttryck för enstaka uttryck:
- Omgiven i
@(expression), därexpressionär en välformulerad C#-uttrycksinstrukitet.
- Omgiven i
-
Uttryck med flera uttryck:
- Omgiven i
@{expression}. - Alla kodsökvägar i uttryck med flera uttryck måste sluta med en
return-instruktion.
- Omgiven i
Exempel
@(true)
@((1+1).ToString())
@("Hi There".Length)
@(Regex.Match(context.Response.Headers.GetValueOrDefault("Cache-Control",""), @"max-age=(?<maxAge>\d+)").Groups["maxAge"]?.Value)
@(context.Variables.ContainsKey("maxAge") ? int.Parse((string)context.Variables["maxAge"]) : 3600)
@{
string[] value;
if (context.Request.Headers.TryGetValue("Authorization", out value))
{
if(value != null && value.Length > 0)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(value[0]));
}
}
return null;
}
Förbrukning
Om inte principreferensen anger något annat kan uttryck användas som attributvärden eller textvärden i en API Management-princip.
Viktigt!
När principen har definierats har principuttrycken endast begränsad verifiering. Uttryck körs av gatewayen vid körning. Eventuella undantag som genereras av principuttryck resulterar i ett körningsfel.
.NET Framework-typer som tillåts i principuttryck
I följande tabell visas de .NET Framework-typer och medlemmar som tillåts i principuttryck.
| Typ | Medlemmar som stöds |
|---|---|
Newtonsoft.Json.Formatting |
Alla |
Newtonsoft.Json.JsonConvert |
SerializeObject, DeserializeObject |
Newtonsoft.Json.Linq.Extensions |
Alla |
Newtonsoft.Json.Linq.JArray |
Alla |
Newtonsoft.Json.Linq.JConstructor |
Alla |
Newtonsoft.Json.Linq.JContainer |
Alla |
Newtonsoft.Json.Linq.JObject |
Alla |
Newtonsoft.Json.Linq.JProperty |
Alla |
Newtonsoft.Json.Linq.JRaw |
Alla |
Newtonsoft.Json.Linq.JToken |
Alla |
Newtonsoft.Json.Linq.JTokenType |
Alla |
Newtonsoft.Json.Linq.JValue |
Alla |
System.Array |
Alla |
System.BitConverter |
Alla |
System.Boolean |
Alla |
System.Byte |
Alla |
System.Char |
Alla |
System.Collections.Generic.Dictionary<TKey, TValue> |
Alla |
System.Collections.Generic.HashSet<T> |
Alla |
System.Collections.Generic.ICollection<T> |
Alla |
System.Collections.Generic.IDictionary<TKey, TValue> |
Alla |
System.Collections.Generic.IEnumerable<T> |
Alla |
System.Collections.Generic.IEnumerator<T> |
Alla |
System.Collections.Generic.IList<T> |
Alla |
System.Collections.Generic.IReadOnlyCollection<T> |
Alla |
System.Collections.Generic.IReadOnlyDictionary<TKey, TValue> |
Alla |
System.Collections.Generic.ISet<T> |
Alla |
System.Collections.Generic.KeyValuePair<TKey, TValue> |
Alla |
System.Collections.Generic.List<T> |
Alla |
System.Collections.Generic.Queue<T> |
Alla |
System.Collections.Generic.Stack<T> |
Alla |
System.Convert |
Alla |
System.DateTime |
(Konstruktor), , , Add, , AddDays, AddHours, AddMillisecondsAddMinutes, AddMonths, , AddSecondsAddTicks, AddYears, DateDayDayOfWeekDayOfYearDaysInMonthHour, , IsDaylightSavingTimeIsLeapYearMaxValueMillisecondMinuteMinValueMonth, , Now, Parse, Second, Subtract, , Ticks, , TimeOfDayTodayToStringUtcNowYear |
System.DateTimeKind |
Utc |
System.DateTimeOffset |
Alla |
System.Decimal |
Alla |
System.Double |
Alla |
System.Enum |
Parse, , TryParseToString |
System.Exception |
Alla |
System.Guid |
Alla |
System.Int16 |
Alla |
System.Int32 |
Alla |
System.Int64 |
Alla |
System.IO.StringReader |
Alla |
System.IO.StringWriter |
Alla |
System.Linq.Enumerable |
Alla |
System.Math |
Alla |
System.MidpointRounding |
Alla |
System.Net.IPAddress |
AddressFamily, Equals, GetAddressBytes, IsLoopback, Parse, , , TryParseToString |
System.Net.WebUtility |
Alla |
System.Nullable |
Alla |
System.Random |
Alla |
System.SByte |
Alla |
System.Security.Cryptography.AsymmetricAlgorithm |
Alla |
System.Security.Cryptography.CipherMode |
Alla |
System.Security.Cryptography.HashAlgorithm |
Alla |
System.Security.Cryptography.HashAlgorithmName |
Alla |
System.Security.Cryptography.HMAC |
Alla |
System.Security.Cryptography.HMACMD5 |
Alla |
System.Security.Cryptography.HMACSHA1 |
Alla |
System.Security.Cryptography.HMACSHA256 |
Alla |
System.Security.Cryptography.HMACSHA384 |
Alla |
System.Security.Cryptography.HMACSHA512 |
Alla |
System.Security.Cryptography.KeyedHashAlgorithm |
Alla |
System.Security.Cryptography.MD5 |
Alla |
System.Security.Cryptography.Oid |
Alla |
System.Security.Cryptography.PaddingMode |
Alla |
System.Security.Cryptography.RNGCryptoServiceProvider |
Alla |
System.Security.Cryptography.RSA |
Alla |
System.Security.Cryptography.RSAEncryptionPadding |
Alla |
System.Security.Cryptography.RSASignaturePadding |
Alla |
System.Security.Cryptography.SHA1 |
Alla |
System.Security.Cryptography.SHA1Managed |
Alla |
System.Security.Cryptography.SHA256 |
Alla |
System.Security.Cryptography.SHA256Managed |
Alla |
System.Security.Cryptography.SHA384 |
Alla |
System.Security.Cryptography.SHA384Managed |
Alla |
System.Security.Cryptography.SHA512 |
Alla |
System.Security.Cryptography.SHA512Managed |
Alla |
System.Security.Cryptography.SymmetricAlgorithm |
Alla |
System.Security.Cryptography.X509Certificates.PublicKey |
Alla |
System.Security.Cryptography.X509Certificates.RSACertificateExtensions |
Alla |
System.Security.Cryptography.X509Certificates.X500DistinguishedName |
Name |
System.Security.Cryptography.X509Certificates.X509Certificate |
Alla |
System.Security.Cryptography.X509Certificates.X509Certificate2 |
Alla |
System.Security.Cryptography.X509Certificates.X509ContentType |
Alla |
System.Security.Cryptography.X509Certificates.X509NameType |
Alla |
System.Single |
Alla |
System.String |
Alla |
System.StringComparer |
Alla |
System.StringComparison |
Alla |
System.StringSplitOptions |
Alla |
System.Text.Encoding |
Alla |
System.Text.RegularExpressions.Capture |
Index, , LengthValue |
System.Text.RegularExpressions.CaptureCollection |
Count, Item |
System.Text.RegularExpressions.Group |
Captures, Success |
System.Text.RegularExpressions.GroupCollection |
Count, Item |
System.Text.RegularExpressions.Match |
Empty, , GroupsResult |
System.Text.RegularExpressions.Regex |
(Konstruktor), IsMatch, Match, Matches, Replace, Unescape, Split |
System.Text.RegularExpressions.RegexOptions |
Alla |
System.Text.StringBuilder |
Alla |
System.TimeSpan |
Alla |
System.TimeZone |
Alla |
System.TimeZoneInfo.AdjustmentRule |
Alla |
System.TimeZoneInfo.TransitionTime |
Alla |
System.TimeZoneInfo |
Alla |
System.Tuple |
Alla |
System.UInt16 |
Alla |
System.UInt32 |
Alla |
System.UInt64 |
Alla |
System.Uri |
Alla |
System.UriPartial |
Alla |
System.Xml.Linq.Extensions |
Alla |
System.Xml.Linq.XAttribute |
Alla |
System.Xml.Linq.XCData |
Alla |
System.Xml.Linq.XComment |
Alla |
System.Xml.Linq.XContainer |
Alla |
System.Xml.Linq.XDeclaration |
Alla |
System.Xml.Linq.XDocument |
Alla, utom Load |
System.Xml.Linq.XDocumentType |
Alla |
System.Xml.Linq.XElement |
Alla |
System.Xml.Linq.XName |
Alla |
System.Xml.Linq.XNamespace |
Alla |
System.Xml.Linq.XNode |
Alla |
System.Xml.Linq.XNodeDocumentOrderComparer |
Alla |
System.Xml.Linq.XNodeEqualityComparer |
Alla |
System.Xml.Linq.XObject |
Alla |
System.Xml.Linq.XProcessingInstruction |
Alla |
System.Xml.Linq.XText |
Alla |
System.Xml.XmlNodeType |
Alla |
Kontextvariabel
Variabeln context är implicit tillgänglig i varje principuttryck. Dess medlemmar:
- Ange information som är relevant för API-begäran och -svar samt relaterade egenskaper.
- Är alla skrivskyddade.
| Kontextvariabel | Tillåtna metoder, egenskaper och parametervärden |
|---|---|
context |
Api: IApiDeploymentFörflutit: TimeSpan – tidsintervall mellan värdet Timestamp för och den aktuella tidenGraphQLLastErrorOperationRequestRequestId: Guid – unik begärandeidentifierareResponseSubscriptionTimestamp: DateTime – tidpunkt då begäran togs emotTracing: bool – anger om spårningen är på eller av Användare Variables: IReadOnlyDictionary<string, object>void Trace(message: string) Workspace |
context.Api |
Id: stringIsCurrentRevision: boolName: stringPath: stringRevision: stringServiceUrl: IUrlVersion: string |
context.Deployment |
GatewayGatewayId: string (returnerar "hanterad" för hanterade gatewayer)Region: stringServiceId: stringServiceName: stringSustainabilityInfoCertificates: IReadOnlyDictionary<string, X509Certificate2> |
context.Deployment.Gateway |
Id: string (returnerar "hanterad" för hanterade gatewayer)InstanceId: string (returnerar "hanterad" för hanterade gatewayer)IsManaged: bool |
context.Deployment.SustainabilityInfo |
CurrentCarbonIntensity: Räkna upp CarbonIntensityCategory |
context.GraphQL |
GraphQLArguments: IGraphQLDataObjectParent: IGraphQLDataObjectExempel |
context.LastError |
Source: stringReason: stringMessage: stringScope: stringSection: stringPath: stringPolicyId: stringMer information om context.LastErrorfinns i Felhantering. |
context.Operation |
Id: stringMethod: stringName: stringUrlTemplate: string |
context.Product |
ApprovalRequired: boolGroups: IEnumerable<IGroup>Id: stringName: stringState: enum ProductState {NotPublished, Published}SubscriptionsLimit: int?SubscriptionRequired: bool |
context.Request |
Body: IMessageBody eller null om begäran inte har någon brödtext.Certificate: System.Security.Cryptography.X509Certificates.X509Certificate2Headers: IReadOnlyDictionary<string, string[]>IpAddress: stringMatchedParameters: IReadOnlyDictionary<string, string>Method: stringOriginalUrl: IUrlUrl: IUrlPrivateEndpointConnection: IPrivateEndpointConnection eller null om begäran inte kommer från en privat slutpunktsanslutning. |
string context.Request.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName: stringdefaultValue: stringReturnerar värden för kommaavgränsade begäranderubriker eller defaultValue om rubriken inte hittas. |
context.Response |
Body: IMessageBodyHeaders: IReadOnlyDictionary<string, string[]>StatusCode: intStatusReason: string |
string context.Response.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName: stringdefaultValue: stringReturnerar kommaavgränsade svarshuvudvärden eller defaultValue om rubriken inte hittas. |
context.Subscription |
CreatedDate: DateTimeEndDate: DateTime?Id: stringKey: stringName: stringPrimaryKey: stringSecondaryKey: stringStartDate: DateTime? |
context.User |
Email: stringFirstName: stringGroups: IEnumerable<IGroup>Id: stringIdentities: IEnumerable<IUserIdentity>LastName: stringNote: stringRegistrationDate: DateTime |
context.Workspace |
Id: stringName: string |
IApi |
Id: stringName: stringPath: stringProtocols: IEnumerable<string>ServiceUrl: IUrlSubscriptionKeyParameterNames: ISubscriptionKeyParameterNames |
IGraphQLDataObject |
TBD |
IGroup |
Id: stringName: string |
IMessageBody |
As<T>(bool preserveContent = false): Where T: string, byte[], JObject, JToken, JArray, XNode, XElement, XDocument – Metoderna context.Request.Body.As<T> och context.Response.Body.As<T> läser en brödtext för begäran eller svarsmeddelanden i den angivna typen T. -Eller- AsFormUrlEncodedContent(bool preserveContent = false) - Metoderna context.Request.Body.AsFormUrlEncodedContent() och context.Response.Body.AsFormUrlEncodedContent() läser URL-kodade formulärdata i en begäran eller svarsmeddelandetext och returnerar ett IDictionary<string, IList<string> objekt. Det avkodade objektet stöder IDictionary åtgärder och följande uttryck: ToQueryString(), JsonConvert.SerializeObject(), ToFormUrlEncodedContent(). Som standard As<T> är metoderna och AsFormUrlEncodedContent() :
För att undvika detta och låta metoden fungera på en kopia av brödtextströmmen anger du parametern preserveContent till , som du ser i exempel för principen set-bodytrue. |
IPrivateEndpointConnection |
Name: stringGroupId: stringMemberName: stringMer information finns i REST-API:et. |
IUrl |
Host: stringPath: stringPort: intQuery: IReadOnlyDictionary<string, string[]>QueryString: stringScheme: string |
ISubscriptionKeyParameterNames |
Header: stringQuery: string |
string IUrl.Query.GetValueOrDefault(queryParameterName: string, defaultValue: string) |
queryParameterName: stringdefaultValue: stringReturnerar kommaavgränsade frågeparametervärden eller defaultValue om parametern inte hittas. |
IUserIdentity |
Id: stringProvider: string |
T context.Variables.GetValueOrDefault<T>(variableName: string, defaultValue: T) |
variableName: stringdefaultValue: TReturnerar gjutet variabelvärde till typ T eller defaultValue om variabeln inte hittas.Den här metoden utlöser ett undantag om den angivna typen inte matchar den faktiska typen av den returnerade variabeln. |
BasicAuthCredentials AsBasic(input: this string) |
input: stringOm indataparametern innehåller ett giltigt huvudvärde för HTTP Basic Authentication-auktoriseringsbegäran returnerar metoden ett objekt av typen BasicAuthCredentials. Annars returnerar metoden null. |
bool TryParseBasic(input: this string, result: out BasicAuthCredentials) |
input: stringresult: out BasicAuthCredentialsOm indataparametern innehåller ett giltigt HTTP Basic Authentication-auktoriseringsvärde i begärandehuvudet returneras true metoden och resultatparametern innehåller ett värde av typen BasicAuthCredentials. Annars returnerar falsemetoden . |
BasicAuthCredentials |
Password: stringUserId: string |
Jwt AsJwt(input: this string) |
input: stringOm indataparametern innehåller ett giltigt JWT-värde returnerar metoden ett objekt av typen Jwt. Annars returnerar nullmetoden . |
bool TryParseJwt(input: this string, result: out Jwt) |
input: stringresult: out JwtOm indataparametern innehåller ett giltigt JWT-värde returnerar true metoden och resultatparametern innehåller ett värde av typen Jwt. Annars returnerar falsemetoden . |
Jwt |
Algorithm: stringAudiences: IEnumerable<string>Claims: IReadOnlyDictionary<string, string[]>ExpirationTime: DateTime?Id: stringIssuer: stringIssuedAt: DateTime?NotBefore: DateTime?Subject: stringType: string |
string Jwt.Claims.GetValueOrDefault(claimName: string, defaultValue: string) |
claimName: stringdefaultValue: stringReturnerar kommaavgränsade anspråksvärden eller defaultValue om rubriken inte hittas. |
byte[] Encrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input – klartext som ska krypterasalg – namnet på en symmetrisk krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar krypterad klartext. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input – klartext som ska krypterasalg -KrypteringsalgoritmReturnerar krypterad klartext. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input – klartext som ska krypterasalg -Krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar krypterad klartext. |
byte[] Decrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input - cypher text som ska dekrypterasalg – namnet på en symmetrisk krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar klartext. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input - cypher text som ska dekrypterasalg -KrypteringsalgoritmReturnerar klartext. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input - cypher text som ska dekrypterasalg -Krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar klartext. |
bool VerifyNoRevocation(input: this System.Security.Cryptography.X509Certificates.X509Certificate2) |
Utför en X.509-kedjevalidering utan att kontrollera status för återkallade certifikat.input – certifikatobjektReturnerar true om valideringen lyckas. false Om verifieringen misslyckas. |
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Policyuttryck
- Ange eller redigera principer
- Återanvända policykonfigurationer
- Lagringsplats för principfragment
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer
För mer information:
- Se hur du anger kontextinformation till serverdelstjänsten. Använd parametern Ange frågesträng och Ange HTTP-huvudprinciper för att ange den här informationen.
- Se hur du använder principen Verifiera JWT för att förauktorisera åtkomst till åtgärder baserat på tokenanspråk.
- Se hur du använder API-spårning för att identifiera hur principer utvärderas och resultatet av dessa utvärderingar.
- Se hur du använder uttryck med principerna Hämta från cache och Store till cache för att konfigurera cachelagring av API Management-svar. Ange en varaktighet som matchar svarscachelagringen för serverdelstjänsten enligt det som anges i den säkerhetskopierade tjänstens
Cache-Controldirektiv. - Se hur du utför innehållsfiltrering. Ta bort dataelement från svaret som tas emot från serverdelen med hjälp av principerna För kontrollflöde och Ange brödtext .
- Information om hur du laddar ned principinstruktionerna finns i GitHub-lagringsplatsen api-management-samples/policies .