Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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 utom parameterless Create() |
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 .