C# Azure api管理中.Contains的奇怪行为
我在Azure API管理中遇到了这种奇怪的行为,正在寻找解决办法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
<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,您正在访问。。。请你发帖子澄清一下标题的类型是什么
属性好吗?谢谢。