.net 如何在抛出错误时检查策略中的变量是否为null-索引超出了数组的界限

.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条件中检查某些内容时,它会抛出错误作为无值,因为它试图计算上面的行 错误

有时,我在“响应”中有两个以上的值被管道符号分隔,而有时,我只得到2个值,在这种情况下,下面的行抛出索引超出范围错误

  <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())" />