C# Azure api管理中.Contains的奇怪行为

C# Azure api管理中.Contains的奇怪行为,c#,azure-api-management,C#,Azure Api Management,我在Azure API管理中遇到了这种奇怪的行为,正在寻找解决办法 <set-variable name="isIOS" value="@(context.Request.Headers["User-Agent"].Contains("iOS"))" /> 始终为false,除非存在完全匹配且用户代理值完全为“iOS” 如果它包含完整字符串(在我的例子中)“iOS代理-xxxxx/1.2.4(com

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

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

始终为false,除非存在完全匹配且用户代理值完全为“iOS”

如果它包含完整字符串(在我的例子中)“iOS代理-xxxxx/1.2.4(com.xxxxx.yyyy.zz;build:108;iOS 14.3.0)Alamofire/4.9.1”,isIOS将设置为“false”


有人能确认此行为和/或知道解决方法吗?

在Azure API管理策略中,context.Request.Headers
是一个简单的
IReadOnlyDictionary

请看这里:

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

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


Microsoft也建议使用这种方法,以防止引发异常,如设计上应考虑的
KeyNotFoundException

,很可能您的代码是.net core,您正在访问。。。请你发帖子澄清一下
标题的类型是什么
属性好吗?谢谢。