0

我的入境政策如下

<choose>
 <when condition="@((context.Request.Body != null) && context.Request.Body.As<JObject> 
   (preserveContent: true)["ChannelID"] != null)">
   <set-header name="channelId" exists-action="override">
    <value>"@(context.Request.Body.As&amp;amp;amp;lt;JObject&amp;amp;amp;gt;(preserveContent: true) 
    ["ChannelID"])"</value>
   </set-header>
 </when>
</choose>

但是入站策略将 ChannelID 视为区分大小写。在请求正文中,如果我们作为 channelId 传递,则 ChannelID 属性不会被识别。

我们如何在入站策略中使属性名称不区分大小写?

4

2 回答 2

1

我找到了解决方案。由于它是 JObject,我们可以添加大小写忽略,如下所示。

<choose>
<when condition="@((context.Request.Body != null) && context.Request.Body.As<JObject>(preserveContent: true).GetValue("channelId", StringComparison.OrdinalIgnoreCase)?.Value<string>() != null)">
    <set-header name="channelId" exists-action="override">
        <value>@(context.Request.Body.As<JObject>(preserveContent: true).GetValue("channelId", StringComparison.OrdinalIgnoreCase)?.Value<string>())</value>
    </set-header>
</when>
于 2020-06-29T12:39:28.867 回答
0

您可以使用该check-header策略来强制请求具有指定的 HTTP 标头。

<check-header name="header name" failed-check-httpcode="code" failed-check-error-message="message" ignore-case="true">
    <value>Value1</value>
    <value>Value2</value>
</check-header>

ignore-case: 可以设置为TrueFalse如果设置为 True,则在将标头值与一组可接受值进行比较时,将忽略大小写。

更多细节,你可以参考这篇文章

于 2020-06-29T09:05:51.760 回答