.net 如何在抛出错误时检查策略中的变量是否为null-索引超出了数组的界限
有时,我在“响应”中有两个以上的值被管道符号分隔,而有时,我只得到2个值,在这种情况下,下面的行抛出索引超出范围错误.net 如何在抛出错误时检查策略中的变量是否为null-索引超出了数组的界限,.net,azure,microservices,azure-api-management,string-conversion,.net,Azure,Microservices,Azure Api Management,String Conversion,有时,我在“响应”中有两个以上的值被管道符号分隔,而有时,我只得到2个值,在这种情况下,下面的行抛出索引超出范围错误 <set-variable name="id" value="@(((String)context.Variables["response"]).Split('|')[2])" /> 当我使用变量值在下面的Choose-when条件中检查某些内容时,它会抛出错误作为无值,因为它试图计算上面的行 错误
<set-variable name="id" value="@(((String)context.Variables["response"]).Split('|')[2])" />
当我使用变量值在下面的Choose-when条件中检查某些内容时,它会抛出错误作为无值,因为它试图计算上面的行
错误是-索引超出了数组的界限。
<when condition="@((String)context.Variables["id"] == "Lollypop")">
我在策略和跟踪中有这一行,如果响应中没有第三个值,并且导致索引超出范围,我看到它将失败。如何调整它,使其看起来好像什么都没有,然后只是空字符串,即“”值
编辑
我在这里寻找类似于null检查的东西,比如在C中,我们有“?”,如果为null,则放入一些空字符串。如何做到这一点
@(((String)context.Variables[“response”])?.Split(“|”)[2])您可以使用下面的代码来判断数组(从拆分字符串得到的数组)是否有两个以上的变量
<set-variable name="count" value="@(((String)context.Variables["response"]).Split('|').Count())" />
<choose>
<when condition="@((int)context.Variables["count"] > 2)">
<set-variable name="id" value="@(((String)context.Variables["response"]).Split('|')[2])" />
</when>
<otherwise>
<set-variable name="id" value="" />
</otherwise>
</choose>
非常感谢,但我决定只使用一个,基于此,我正在根据选择时间读取其他值。问题解决了:)因为,我不想在政策上做太多的计算,这将是一种过激的行为。但是如果我改变主意或者我的团队有不同的设计思想,我肯定会使用你的解决方案。嗨@Jasmine,你为什么删除了关于“比较字符串忽略案例”的帖子?虽然您已经尝试了我提供的解决方案,但现在通过一些更改来解决问题。这个问题和解决方案也可以帮助其他社区,因此您无需删除它。
<set-variable name="id" value="@(((String)context.Variables["response"]).Split('|').Last())" />