我在Azure API管理中面临这种奇怪的行为,正在寻找解决方法。
<set-variable name="isIOS" value="@(context.Request.Headers["User-Agent"].Contains("iOS"))" />
总是错误的,除非存在完全匹配并且用户代理值恰好是"0";iOS";。
如果它包含完整的字符串(在我的情况下(";iOS代理-xxxxx/1.2.4(com.xxxxx.yyyy.zz;内部版本:108;iOS 14.3.0(Alamofire/4.9.1";isIOS被设置";false";。
有人能确认这种行为和/或知道解决方法吗?
Azure API中的context.Request.Headers
管理策略是一个简单的IReadOnlyDictionary<string, string[]>
看看这里:https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions#ref-上下文请求
在您的情况下,您可以获得isIOS
变量,如下所示:
<set-variable name="isIOS" value="@(context.Request.Headers.GetValueOrDefault("User-Agent","").Contains("iOS"))" />
Microsoft也建议使用这种方法,以防止抛出KeyNotFoundException
等异常