的奇怪行为.包含在Azure api管理中



我在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等异常

最新更新