【问题标题】:Strange behavior of .Contains in Azure api management.Contains 在 Azure api 管理中的奇怪行为
【发布时间】:2020-12-04 00:25:20
【问题描述】:

我在 Azure API 管理中遇到了这种奇怪的行为,正在寻找解决方法。

<set-variable name="isIOS" value="@(context.Request.Headers["User-Agent"].Contains("iOS"))" />

始终为 false,除非存在完全匹配且 User-Agent 值正好是“iOS”。

如果它包含完整的字符串(在我的情况下)“iOS Agent - xxxxx/1.2.4 (com.xxxxx.yyyyy.zz; build:108; iOS 14.3.0) Alamofire/4.9.1” isIOS 被设置“假”。

有人可以确认这种行为和/或知道解决方法吗?

【问题讨论】:

标签: c# azure-api-management


【解决方案1】:

context.Request.Headers 在 Azure API 管理策略中是一个简单的IReadOnlyDictionary&lt;string, string[]&gt;

看这里:https://docs.microsoft.com/en-us/azure/api-management/api-management-policy-expressions#ref-context-request

在您的情况下,您可以像这样获取isIOS 变量:

<set-variable name="isIOS" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iOS"))" />

这种方法也是微软推荐的,可以防止抛出像KeyNotFoundException这样的异常

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2019-04-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多