Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
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:
@(expression)
, där expression
är en välformulerad C#-uttrycksinstrukitet.@{expression}
.return
-instruktion.@(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;
}
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.
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), , , AddMilliseconds , , AddMinutes , AddMonths , AddSeconds AddTicks , AddYears , , Date Day , DayOfWeek , DaysInMonth DayOfYear IsLeapYear IsDaylightSavingTime MaxValue Hour , , MinValue Month Minute Millisecond Parse Second Now , , Subtract , Ticks , TimeOfDay , Today , , ToString , , UtcNow AddHours AddDays Add Year |
System.DateTimeKind |
Utc |
System.DateTimeOffset |
Alla |
System.Decimal |
Alla |
System.Double |
Alla |
System.Enum |
Parse , , TryParse ToString |
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 , , , TryParse ToString |
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 , , Length Value |
System.Text.RegularExpressions.CaptureCollection |
Count , Item |
System.Text.RegularExpressions.Group |
Captures , Success |
System.Text.RegularExpressions.GroupCollection |
Count , Item |
System.Text.RegularExpressions.Match |
Empty , , Groups Result |
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 |
Variabeln context
är implicit tillgänglig i varje principuttryck. Dess medlemmar:
Kontextvariabel | Tillåtna metoder, egenskaper och parametervärden |
---|---|
context |
Api : IApi Deployment Förflutit: TimeSpan – tidsintervall mellan värdet Timestamp för och den aktuella tidenGraphQL LastError Operation Request RequestId : Guid – unik begärandeidentifierareResponse Subscription Timestamp : 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 : string IsCurrentRevision : bool Name : string Path : string Revision : string ServiceUrl : IUrl Version : string |
context.Deployment |
Gateway GatewayId : string (returnerar "hanterad" för hanterade gatewayer)Region : string ServiceId : string ServiceName : string Certificates : 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.GraphQL |
GraphQLArguments : IGraphQLDataObject Parent : IGraphQLDataObject Exempel |
context.LastError |
Source : string Reason : string Message : string Scope : string Section : string Path : string PolicyId : string Mer information om context.LastError finns i Felhantering. |
context.Operation |
Id : string Method : string Name : string UrlTemplate : string |
context.Product |
ApprovalRequired : bool Groups : IEnumerable< IGroup > Id : string Name : string State : 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.X509Certificate2 Headers : IReadOnlyDictionary<string, string[]> IpAddress : string MatchedParameters : IReadOnlyDictionary<string, string> Method : string OriginalUrl : IUrl Url : IUrl PrivateEndpointConnection : IPrivateEndpointConnection eller null om begäran inte kommer från en privat slutpunktsanslutning. |
string context.Request.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName : string defaultValue : string Returnerar värden för kommaavgränsade begäranderubriker eller defaultValue om rubriken inte hittas. |
context.Response |
Body : IMessageBody Headers : IReadOnlyDictionary<string, string[]> StatusCode : int StatusReason : string |
string context.Response.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName : string defaultValue : string Returnerar kommaavgränsade svarshuvudvärden eller defaultValue om rubriken inte hittas. |
context.Subscription |
CreatedDate : DateTime EndDate : DateTime? Id : string Key : string Name : string PrimaryKey : string SecondaryKey : string StartDate : DateTime? |
context.User |
Email : string FirstName : string Groups : IEnumerable< IGroup > Id : string Identities : IEnumerable< IUserIdentity > LastName : string Note : string RegistrationDate : DateTime |
context.Workspace |
Id : string Name : string |
IApi |
Id : string Name : string Path : string Protocols : IEnumerable<string> ServiceUrl : IUrl SubscriptionKeyParameterNames : ISubscriptionKeyParameterNames |
IGraphQLDataObject |
TBD |
IGroup |
Id : string Name : 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-body.true |
IPrivateEndpointConnection |
Name : string GroupId : string MemberName : string Mer information finns i REST-API:et. |
IUrl |
Host : string Path : string Port : int Query : IReadOnlyDictionary<string, string[]> QueryString : string Scheme : string |
ISubscriptionKeyParameterNames |
Header : string Query : string |
string IUrl.Query.GetValueOrDefault(queryParameterName: string, defaultValue: string) |
queryParameterName : string defaultValue : string Returnerar kommaavgränsade frågeparametervärden eller defaultValue om parametern inte hittas. |
IUserIdentity |
Id : string Provider : string |
T context.Variables.GetValueOrDefault<T>(variableName: string, defaultValue: T) |
variableName : string defaultValue : T Returnerar 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 : string Om 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 : string result : out BasicAuthCredentials Om 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 false metoden . |
BasicAuthCredentials |
Password : string UserId : string |
Jwt AsJwt(input: this string) |
input : string Om indataparametern innehåller ett giltigt JWT-tokenvärde returnerar metoden ett objekt av typen Jwt . Annars returnerar null metoden . |
bool TryParseJwt(input: this string, result: out Jwt) |
input : string result : out Jwt Om indataparametern innehåller ett giltigt JWT-tokenvärde returnerar true metoden och resultatparametern innehåller ett värde av typen Jwt . Annars returnerar false metoden . |
Jwt |
Algorithm : string Audiences : IEnumerable<string> Claims : IReadOnlyDictionary<string, string[]> ExpirationTime : DateTime? Id : string Issuer : string IssuedAt : DateTime? NotBefore : DateTime? Subject : string Type : string |
string Jwt.Claims.GetValueOrDefault(claimName: string, defaultValue: string) |
claimName : string defaultValue : string Returnerar 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. |
Mer information om hur du arbetar med principer finns i:
För mer information:
Cache-Control
direktiv.Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Utvärdera booleska uttryck för att fatta beslut i C# - Training
Lär dig de operatorer och tekniker som krävs för utvärdering och jämförande av värden i dina beslutsinstruktioner.
Dokumentation
Principreferens för Azure API Management – set-header
Referens för den princip för set-header som är tillgänglig för användning i Azure API Management. Tillhandahåller principanvändning, inställningar och exempel.
Principreferens för Azure API Management – set-variable
Referens för den uppsättningsvariabelprincip som är tillgänglig för användning i Azure API Management. Tillhandahåller principanvändning, inställningar och exempel.
Principreferens för Azure API Management – set-body
Referens för den uppsättningstextprincip som är tillgänglig för användning i Azure API Management. Tillhandahåller principanvändning, inställningar och exempel.