Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
UYGULANANLAR: Tüm API Management katmanları
Bu makalede, C# 7'de ilke ifadelerinin söz dizimi açıklanmaktadır. Her ifadenin erişimi vardır:
- Örtük olarak sağlanan bağlam değişkeni.
- .NET Framework türlerinin izin verilen bir alt kümesi .
Sözdizimi
-
Tek deyimli ifadeler:
- içine alınmış
@(expression), buradaexpressioniyi biçimlendirilmiş bir C# ifade deyimidir.
- içine alınmış
-
Çok deyimli ifadeler:
- içine alınmalıdır
@{expression}. - Çok deyimli ifadeler içindeki tüm kod yolları bir
returndeyimle bitmelidir.
- içine alınmalıdır
Örnekler
@(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;
}
Kullanım
İlke başvurusu aksini belirtmediği sürece, ifadeler herhangi bir API Management ilkesinde öznitelik değerleri veya metin değerleri olarak kullanılabilir.
Önemli
İlke tanımlandığında, ilke ifadeleri yalnızca sınırlı doğrulamaya sahip olur. İfadeler ağ geçidi tarafından çalışma zamanında yürütülür. İlke ifadeleri tarafından oluşturulan özel durumlar çalışma zamanı hatasıyla sonuçlanır.
İlke ifadelerinde izin verilen .NET Framework türleri
Aşağıdaki tabloda ilke ifadelerinde izin verilen .NET Framework türleri ve üyeleri listelenmektedir.
| Tür | Desteklenen üyeler |
|---|---|
Newtonsoft.Json.Formatting |
Tümü |
Newtonsoft.Json.JsonConvert |
SerializeObject, DeserializeObject |
Newtonsoft.Json.Linq.Extensions |
Tümü |
Newtonsoft.Json.Linq.JArray |
Tümü |
Newtonsoft.Json.Linq.JConstructor |
Tümü |
Newtonsoft.Json.Linq.JContainer |
Tümü |
Newtonsoft.Json.Linq.JObject |
Tümü |
Newtonsoft.Json.Linq.JProperty |
Tümü |
Newtonsoft.Json.Linq.JRaw |
Tümü |
Newtonsoft.Json.Linq.JToken |
Tümü |
Newtonsoft.Json.Linq.JTokenType |
Tümü |
Newtonsoft.Json.Linq.JValue |
Tümü |
System.Array |
Tümü |
System.BitConverter |
Tümü |
System.Boolean |
Tümü |
System.Byte |
Tümü |
System.Char |
Tümü |
System.Collections.Generic.Dictionary<TKey, TValue> |
Tümü |
System.Collections.Generic.HashSet<T> |
Tümü |
System.Collections.Generic.ICollection<T> |
Tümü |
System.Collections.Generic.IDictionary<TKey, TValue> |
Tümü |
System.Collections.Generic.IEnumerable<T> |
Tümü |
System.Collections.Generic.IEnumerator<T> |
Tümü |
System.Collections.Generic.IList<T> |
Tümü |
System.Collections.Generic.IReadOnlyCollection<T> |
Tümü |
System.Collections.Generic.IReadOnlyDictionary<TKey, TValue> |
Tümü |
System.Collections.Generic.ISet<T> |
Tümü |
System.Collections.Generic.KeyValuePair<TKey, TValue> |
Tümü |
System.Collections.Generic.List<T> |
Tümü |
System.Collections.Generic.Queue<T> |
Tümü |
System.Collections.Generic.Stack<T> |
Tümü |
System.Convert |
Tümü |
System.DateTime |
(Oluşturucu), Add, , , AddDays, AddHours, AddMilliseconds, AddMinutes, , AddMonths, AddSeconds, AddTicksAddYears, DateDay, DayOfWeekDayOfYearDaysInMonthHourIsDaylightSavingTimeIsLeapYearMaxValueMillisecond, Minute, , MinValue, Month, , Now, Parse, , , SecondSubtractTicksTimeOfDayTodayToStringUtcNowYear |
System.DateTimeKind |
Utc |
System.DateTimeOffset |
Tümü |
System.Decimal |
Tümü |
System.Double |
Tümü |
System.Enum |
Parse, TryParse, ToString |
System.Exception |
Tümü |
System.Guid |
Tümü |
System.Int16 |
Tümü |
System.Int32 |
Tümü |
System.Int64 |
Tümü |
System.IO.StringReader |
Tümü |
System.IO.StringWriter |
Tümü |
System.Linq.Enumerable |
Tümü |
System.Math |
Tümü |
System.MidpointRounding |
Tümü |
System.Net.IPAddress |
AddressFamily, Equals, GetAddressBytes, , IsLoopback, Parse, TryParse, ToString |
System.Net.WebUtility |
Tümü |
System.Nullable |
Tümü |
System.Random |
Tümü |
System.SByte |
Tümü |
System.Security.Cryptography.AsymmetricAlgorithm |
Tümü |
System.Security.Cryptography.CipherMode |
Tümü |
System.Security.Cryptography.HashAlgorithm |
Tümü |
System.Security.Cryptography.HashAlgorithmName |
Tümü |
System.Security.Cryptography.HMAC |
Tümü |
System.Security.Cryptography.HMACMD5 |
Tümü |
System.Security.Cryptography.HMACSHA1 |
Tümü |
System.Security.Cryptography.HMACSHA256 |
Tümü |
System.Security.Cryptography.HMACSHA384 |
Tümü |
System.Security.Cryptography.HMACSHA512 |
Tümü |
System.Security.Cryptography.KeyedHashAlgorithm |
Tümü |
System.Security.Cryptography.MD5 |
Tümü |
System.Security.Cryptography.Oid |
Tümü |
System.Security.Cryptography.PaddingMode |
Tümü |
System.Security.Cryptography.RNGCryptoServiceProvider |
Tümü |
System.Security.Cryptography.RSA |
Tümü |
System.Security.Cryptography.RSAEncryptionPadding |
Tümü |
System.Security.Cryptography.RSASignaturePadding |
Tümü |
System.Security.Cryptography.SHA1 |
Tümü |
System.Security.Cryptography.SHA1Managed |
Tümü |
System.Security.Cryptography.SHA256 |
Tümü |
System.Security.Cryptography.SHA256Managed |
Tümü |
System.Security.Cryptography.SHA384 |
Tümü |
System.Security.Cryptography.SHA384Managed |
Tümü |
System.Security.Cryptography.SHA512 |
Tümü |
System.Security.Cryptography.SHA512Managed |
Tümü |
System.Security.Cryptography.SymmetricAlgorithm |
Parametresiz hariç hepsi Create() |
System.Security.Cryptography.X509Certificates.PublicKey |
Tümü |
System.Security.Cryptography.X509Certificates.RSACertificateExtensions |
Tümü |
System.Security.Cryptography.X509Certificates.X500DistinguishedName |
Name |
System.Security.Cryptography.X509Certificates.X509Certificate |
Tümü |
System.Security.Cryptography.X509Certificates.X509Certificate2 |
Tümü |
System.Security.Cryptography.X509Certificates.X509ContentType |
Tümü |
System.Security.Cryptography.X509Certificates.X509NameType |
Tümü |
System.Single |
Tümü |
System.String |
Tümü |
System.StringComparer |
Tümü |
System.StringComparison |
Tümü |
System.StringSplitOptions |
Tümü |
System.Text.Encoding |
Tümü |
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 |
(Oluşturucu), IsMatch, Match, Matches, Replace, , UnescapeSplit |
System.Text.RegularExpressions.RegexOptions |
Tümü |
System.Text.StringBuilder |
Tümü |
System.TimeSpan |
Tümü |
System.TimeZone |
Tümü |
System.TimeZoneInfo.AdjustmentRule |
Tümü |
System.TimeZoneInfo.TransitionTime |
Tümü |
System.TimeZoneInfo |
Tümü |
System.Tuple |
Tümü |
System.UInt16 |
Tümü |
System.UInt32 |
Tümü |
System.UInt64 |
Tümü |
System.Uri |
Tümü |
System.UriPartial |
Tümü |
System.Xml.Linq.Extensions |
Tümü |
System.Xml.Linq.XAttribute |
Tümü |
System.Xml.Linq.XCData |
Tümü |
System.Xml.Linq.XComment |
Tümü |
System.Xml.Linq.XContainer |
Tümü |
System.Xml.Linq.XDeclaration |
Tümü |
System.Xml.Linq.XDocument |
Tümü, Load |
System.Xml.Linq.XDocumentType |
Tümü |
System.Xml.Linq.XElement |
Tümü |
System.Xml.Linq.XName |
Tümü |
System.Xml.Linq.XNamespace |
Tümü |
System.Xml.Linq.XNode |
Tümü |
System.Xml.Linq.XNodeDocumentOrderComparer |
Tümü |
System.Xml.Linq.XNodeEqualityComparer |
Tümü |
System.Xml.Linq.XObject |
Tümü |
System.Xml.Linq.XProcessingInstruction |
Tümü |
System.Xml.Linq.XText |
Tümü |
System.Xml.XmlNodeType |
Tümü |
Bağlam değişkeni
context değişkeni her ilke ifadesinde örtük olarak kullanılabilir. Üyeleri:
| Bağlam Değişkeni | İzin verilen yöntemler, özellikler ve parametre değerleri |
|---|---|
context |
Api: IApiBackendDeploymentGeçen: TimeSpan - değeri Timestamp ile geçerli saat arasındaki zaman aralığıGraphQLLastErrorOperationRequestRequestId: Guid - benzersiz istek tanımlayıcısıResponseSubscriptionTimestamp: DateTime - isteğin alındığı zaman noktasıTracing: bool - İzlemenin açık mı yoksa kapalı mı olduğunu gösterir Kullanıcı Variables: IReadOnlyDictionary<string, object>void Trace(message: string) Workspace |
context.Api |
Id: stringIsCurrentRevision: boolName: stringPath: stringRevision: stringServiceUrl: IUrlVersion: string |
context.Backend |
AzureRegion: stringId: stringType: enum BackendType {Single, Pool} |
context.Deployment |
GatewayGatewayId: string (yönetilen ağ geçitleri için 'yönetilen' döndürür)Region: stringServiceId: stringServiceName: stringSustainabilityInfoCertificates: IReadOnlyDictionary<string, X509Certificate2> |
context.Deployment.Gateway |
Id: string (yönetilen ağ geçitleri için 'yönetilen' döndürür)InstanceId: string (yönetilen ağ geçitleri için 'yönetilen' döndürür)IsManaged: bool |
context.Deployment.SustainabilityInfo |
CurrentCarbonIntensity: Enum KarbonYoğunluk Kategorisi |
context.GraphQL |
GraphQLArguments: IGraphQLDataObjectParent: IGraphQLDataObjectÖrnekler |
context.LastError |
Source: stringReason: stringMessage: stringScope: stringSection: stringPath: stringPolicyId: stringhakkında context.LastErrordaha fazla bilgi için bkz . Hata işleme. |
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 veya null isteğin gövdesi yoksa.Certificate: System.Security.Cryptography.X509Certificates.X509Certificate2FoundryHeaders: IReadOnlyDictionary<string, string[]>IpAddress: stringMatchedParameters: IReadOnlyDictionary<string, string>Method: stringOriginalUrl: IUrlUrl: IUrlPrivateEndpointConnection: IPrivateEndpointConnection veya null istek özel uç nokta bağlantısından gelmiyorsa. |
context.Request.Foundry |
Deployment: string - Microsoft Foundry'de istekle ilişkili model dağıtım kimliği. |
string context.Request.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName: stringdefaultValue: stringVirgülle ayrılmış istek üst bilgisi değerlerini veya defaultValue üst bilgi bulunamazsa döndürür. |
context.Response |
Body: IMessageBodyHeaders: IReadOnlyDictionary<string, string[]>StatusCode: intStatusReason: string |
string context.Response.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName: stringdefaultValue: stringVirgülle ayrılmış yanıt üst bilgisi değerlerini veya defaultValue üst bilgi bulunamazsa döndürür. |
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 |
Henüz belirlenmedi |
IGroup |
Id: stringName: string |
IMessageBody |
As<T>(bool preserveContent = false): Where T: string, byte[], JObject, JToken, JArray, XNode, XElement, XDocument context.Request.Body.As<T>- ve context.Response.Body.As<T> yöntemleri, belirtilen türde Tbir istek veya yanıt iletisi gövdesini okur. -Veya- AsFormUrlEncodedContent(bool preserveContent = false) context.Request.Body.AsFormUrlEncodedContent()- ve context.Response.Body.AsFormUrlEncodedContent() yöntemleri, istek veya yanıt iletisi gövdesinde URL ile kodlanmış form verilerini okur ve bir IDictionary<string, IList<string> nesne döndürür. Kodu çözülen nesne işlemleri ve şu ifadeleri destekler IDictionary : ToQueryString(), JsonConvert.SerializeObject(), ToFormUrlEncodedContent(). Varsayılan olarak As<T> ve AsFormUrlEncodedContent() yöntemleri:
Bunu önlemek ve yönteminin gövde akışının bir kopyası üzerinde çalışması için preserveContent ilkesinin true örneklerinde gösterildiği gibi parametresini olarak ayarlayın. |
IPrivateEndpointConnection |
Name: stringGroupId: stringMemberName: stringDaha fazla bilgi için bkz . REST API. |
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: stringVirgülle ayrılmış sorgu parametresi değerlerini veya defaultValue parametre bulunamazsa döndürür. |
IUserIdentity |
Id: stringProvider: string |
T context.Variables.GetValueOrDefault<T>(variableName: string, defaultValue: T) |
variableName: stringdefaultValue: TTürüne TdefaultValue veya değişkeni bulunamazsa değişken değeri türe dönüştürmeyi döndürür.Belirtilen tür döndürülen değişkenin gerçek türüyle eşleşmiyorsa bu yöntem bir özel durum oluşturur. |
BasicAuthCredentials AsBasic(input: this string) |
input: stringGiriş parametresi geçerli bir HTTP Temel Kimlik Doğrulaması yetkilendirme isteği üst bilgi değeri içeriyorsa, yöntem türünde BasicAuthCredentialsbir nesne döndürür; aksi takdirde yöntem null döndürür. |
bool TryParseBasic(input: this string, result: out BasicAuthCredentials) |
input: stringresult: out BasicAuthCredentialsGiriş parametresi istek üst bilgisinde geçerli bir HTTP Temel Kimlik Doğrulaması yetkilendirme değeri içeriyorsa, yöntem döndürür true ve sonuç parametresi türünde BasicAuthCredentialsbir değer içerir; aksi takdirde yöntemi döndürür false. |
BasicAuthCredentials |
Password: stringUserId: string |
Jwt AsJwt(input: this string) |
input: stringGiriş parametresi geçerli bir JWT değeri içeriyorsa, yöntemi türünde Jwtbir nesne döndürür; aksi takdirde yöntemi döndürür null. |
bool TryParseJwt(input: this string, result: out Jwt) |
input: stringresult: out JwtGiriş parametresi geçerli bir JWT değeri içeriyorsa, yöntemi döndürür true ve sonuç parametresi türünde Jwtbir değer içerir; aksi takdirde yöntemi döndürür false. |
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: stringVirgülle ayrılmış talep değerlerini veya defaultValue üst bilgi bulunamazsa döndürür. |
byte[] Encrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input - şifrelenecek düz metinalg - simetrik şifreleme algoritmasının adıkey - şifreleme anahtarıiv - başlatma vektöruŞifrelenmiş düz metin döndürür. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input - şifrelenecek düz metinalg - şifreleme algoritmasıŞifrelenmiş düz metin döndürür. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input - şifrelenecek düz metinalg - şifreleme algoritmasıkey - şifreleme anahtarıiv - başlatma vektöruŞifrelenmiş düz metin döndürür. |
byte[] Decrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input - Şifresi çözülecek şifre metnialg - simetrik şifreleme algoritmasının adıkey - şifreleme anahtarıiv - başlatma vektöruDüz metin döndürür. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input - Şifresi çözülecek şifre metnialg - şifreleme algoritmasıDüz metin döndürür. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input - Şifresi çözülecek şifre metnialg - şifreleme algoritmasıkey - şifreleme anahtarıiv - başlatma vektöruDüz metin döndürür. |
bool VerifyNoRevocation(input: this System.Security.Cryptography.X509Certificates.X509Certificate2) |
Sertifika iptal durumunu denetlemeden X.509 zincir doğrulaması gerçekleştirir.input - sertifika nesnesiDoğrulama başarılı olursa, true doğrulama başarısız olursa döndürürfalse. |
İlgili içerik
İlkelerle çalışma hakkında daha fazla bilgi için bkz:
- Öğretici: API'nizi dönüştürme ve koruma
- İlke deyimlerinin ve ayarlarının tam listesi için ilke başvurusu
- Politika ifadeleri
- Politikaları ayarlama veya düzenleme
- Yeniden kullanım için ilke yapılandırmaları
- İlke kod parçacıkları deposu
- İlke oyun alanı deposu
- Azure API Management ilke araç seti
- Politikalar oluşturmak, açıklamak ve sorun gidermek için Copilot yardımı alın
Daha fazla bilgi için:
- Arka uç hizmetinize bağlam bilgilerini sağlamayı öğrenin. Bu bilgileri sağlamak için Sorgu dizesi ayarla parametresini ve HTTP üst bilgi ilkelerini ayarla'yı kullanın.
- Belirteç taleplerine göre işlemlere erişimi önceden yetkilendirmek için JWT Doğrulama ilkesini nasıl kullanacağınızı öğrenin.
- İlkelerin nasıl değerlendirildiğini ve bu değerlendirmelerin sonuçlarını algılamak için API izlemeyi nasıl kullanacağınızı öğrenin.
- API Management yanıt önbelleğini yapılandırmak için önbellekten al ve Önbellekten depolama ilkeleriyle ifadeleri nasıl kullanacağınızı görün. Arka
Cache-Controluç hizmetinin yönergesi tarafından belirtilen yanıt önbelleğe alma işlemiyle eşleşen bir süre ayarlayın. - İçerik filtrelemenin nasıl gerçekleştirildiğini görün. Denetim akışını kullanarak arka uçtan alınan yanıttan veri öğelerini kaldırın ve Gövde ilkelerini ayarlayın.
- İlke deyimlerini indirmek için bkz . api-management-samples/policies GitHub deposu.