Azure Api管理为单向请求设置转发请求
我想登录以记录请求和响应,因此我在入站和出站部分放置了一个单向请求:Azure Api管理为单向请求设置转发请求,azure,azure-api-management,Azure,Azure Api Management,我想登录以记录请求和响应,因此我在入站和出站部分放置了一个单向请求: <policies> <inbound> <send-one-way-request mode="new"> <set-url>@("example.com")</set-url> <set-method>POST</set-meth
<policies>
<inbound>
<send-one-way-request mode="new">
<set-url>@("example.com")</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@(context.Request.Body.As<string>(preserveContent: true))</set-body>
</send-one-way-request>
</inbound>
<backend>
<base />
</backend>
<outbound>
<send-one-way-request mode="new">
<set-url>@("example.com")</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@(context.Response.Body.As<string>(preserveContent: true))</set-body>
</send-one-way-request>
</outbound>
</policies>
转发请求(9690毫秒)
但在出境游中,我只得到:
发送单向请求(0毫秒)
也没有提出请求。因为我使用单向请求,所以我不希望呼叫有响应,也不记得在入站部分有转发请求
(在入站部分有单向请求的已保存跟踪呼叫中没有找到它们)
是否存在触发转发请求的其他配置
编辑:
我使用azure函数来处理这个问题。当我在子域中键入时,转发请求消失,但当我在函数名中键入时,它仍然存在。。。两个请求都指向同一azure函数
Edit2:
这让人更加困惑:当我从swagger文件发送默认主体时,请求转发并不存在。如果我重复请求或修改默认正文,则会出现…由于发送单向请求策略对于请求处理本身是完全异步的,因此无法保证将记录来自此类请求的回复,因为在收到请求时,请求本身可能会被长时间处理,响应连同跟踪信息一起返回给客户端。因此,如果在接收到发送单向请求的响应时,主请求仍在处理中,则会记录响应,否则不会记录 在第一个示例中,记录了对入站中单向请求的回复,因为在主请求-将请求发送到后端,处理出站部分仍有很多处理要做。但当单向请求作为outbound中的最后一条语句放置时,就在发送对客户端的响应之前,对单向请求的响应将来得太晚,无法放置到跟踪中 子域中的输入错误可能会触发更长的连接时间,如果该域不主动拒绝连接,则会暂停响应,从而从跟踪中消失
这都是时间的问题。如果要确保主请求处理暂停,直到收到这些侧请求的响应,请改用发送请求策略。我不想记录请求,请求正在向日志记录服务发送信息。我感到困惑,因为转发请求的时间被添加到了总时间中(这不是async.应该如何工作,或者是跟踪通过添加转发请求时间而被窃听?),它没有添加到总请求处理时间中。原始跟踪文件(ocp apim trace link头中提供的链接)仅包含事件发生时间的时间戳,门户UI按时间戳对事件进行排序,并计算差异以显示时间,因此可能会产生误导。感谢您的解释。如果史密斯女士能告诉我这件事,那就太好了
"One way request was successfully send to https://...."
{
"response": {
"status": {
"code": 200,
"reason": "OK"
},
"headers": [
{
"name": "Pragma",
"value": "no-cache"
},
{
"name": "Content-Length",
"value": "2"
},
{
"name": "Cache-Control",
"value": "no-cache"
},
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"name": "Date",
"value": "Wed, 05 Jul 2017 07:56:14 GMT"
},
{
"name": "Expires",
"value": "-1"
},
{
"name": "Server",
"value": "Microsoft-IIS/8.0"
},
{
"name": "X-AspNet-Version",
"value": "4.0.30319"
},
{
"name": "X-Powered-By",
"value": "ASP.NET"
}
]
}
}
"One way request was successfully send to https://...."