始终为false,除非存在精确匹配并且User-Agent值恰好为"iOS“。 如果它包含完整的字符串(在我的例子中)“Alamofire">
我在Azure API管理中遇到了这种奇怪的行为,正在寻找解决方法。
<set-variable name="isIOS" value="@(context.Request.Headers["User-Agent"].Contains("iOS"))" />
始终为false,除非存在精确匹配并且User-Agent值恰好为"iOS“。
如果它包含完整的字符串(在我的例子中)“Alamofire代理- iOS代理- xxxxx/1.2.4 (com.xxxxx.yyyyy.zz;build:108;iOS 14.3.0) Alamofire/4.9.1”isIOS被设置为"false“。
是否有人可以确认此行为和/或知道解决此问题的方法?
发布于 2020-12-04 01:17:29
Azure API管理策略中的context.Request.Headers
它是一个简单的IReadOnlyDictionary<string, string[]>
在您的示例中,您可以像这样获取isIOS
变量:
<set-variable name="isIOS" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iOS"))" />
微软也推荐这种方法,可以防止抛出像KeyNotFoundException
这样的异常
https://stackoverflow.com/questions/65136200
复制