.Contains 在 Azure api 管理中的奇怪行为
Strange behavior of .Contains in Azure api management
我在 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 设置为“false”。
有人可以确认此行为 and/or 知道解决方法吗?
context.Request.Headers
在 Azure API 中的管理策略是一个简单的 IReadOnlyDictionary<string, string[]>
在您的情况下,您可以像这样获得 isIOS
变量:
<set-variable name="isIOS" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iOS"))" />
这种方法也是微软推荐的,可以防止抛出像KeyNotFoundException
这样的异常
我在 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 设置为“false”。
有人可以确认此行为 and/or 知道解决方法吗?
context.Request.Headers
在 Azure API 中的管理策略是一个简单的 IReadOnlyDictionary<string, string[]>
在您的情况下,您可以像这样获得 isIOS
变量:
<set-variable name="isIOS" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iOS"))" />
这种方法也是微软推荐的,可以防止抛出像KeyNotFoundException