我想登录以记录请求和响应,因此我在入站和出站部分放置了单向请求:
<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>
相同的电话,除了身体。
当我检查跟踪时,我在入站部分看到了这一点:
send-one-way-request(0 ms)
"One way request was successfully send to https://...."
转发请求(9690毫秒)
{
"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"
}
]
}
}
但在出境我只得到:
send-one-way-request(0 ms)
"One way request was successfully send to https://...."
并且没有转发请求。因为我使用单向请求,所以我不希望来自通话的响应,我不记得在入站部分有forward-request
(没有在保存中找到它们在入站中使用单向请求跟踪调用。)
是否有其他任何配置会触发转发请求?
修改
我使用azure函数来处理这个问题。当我在子域中输入拼写错误时,转发请求消失了,但是当我在函数名中输入错误时它仍然存在...两个请求都被定向到同一个azure函数。
EDIT2:
这变得更加混乱:当我从swagger文件发送默认正文时,请求转发不在那里。如果我重复请求或者如果我修改默认正文,则会显示...
答案 0 :(得分:0)
由于send-one-way请求策略在请求处理本身方面是完全异步的,因此无法保证将记录此类请求的回复,因为在收到请求时,请求本身可能会被长时间处理,响应返回客户端以及跟踪信息。所以它最好的工作,如果在收到send-one-way-request的响应时主要请求仍在处理中,则会记录响应,否则不会。
在第一个示例中,记录了对入站单向请求的回复,因为在主请求上仍有很多处理要做 - 向后端发送请求,处理出站段。但是当单向请求被作为出站的最后一个语句放置时,就在发送对客户端的响应之前 - 对单向请求的响应将来得太晚而无法跟踪。
子域中的错字可能会触发更长的连接时间,如果此类域不主动拒绝连接,则会停止响应,因此它将从跟踪中消失。
这都是时间问题。如果您想确保主要请求处理停止,直到您从这些请求获得响应,请使用发送请求策略。