APIM后面的Azure服务总线

APIM后面的Azure服务总线,azure,azureservicebus,azure-api-management,azure-servicebus-queues,Azure,Azureservicebus,Azure Api Management,Azure Servicebus Queues,我正在尝试通过APIM向服务总线队列发送消息。我已经阅读了几篇类似下面的文章,但运气不佳 现在的问题是,当我尝试发送消息时,而不是创建典型的201,我只收到一个200 OK,没有消息到达队列。请注意,它可以很好地直接与相关的服务总线连接 下面是我目前使用的策略 <policies> <inbound> <set-header name="Authorization" exists-action="override">

我正在尝试通过APIM向服务总线队列发送消息。我已经阅读了几篇类似下面的文章,但运气不佳

现在的问题是,当我尝试发送消息时,而不是创建典型的201,我只收到一个200 OK,没有消息到达队列。请注意,它可以很好地直接与相关的服务总线连接

下面是我目前使用的策略

<policies>
<inbound>
<set-header name="Authorization" exists-action="override">
<value>@{
// Load variables
string resourceUri = "xxxxx.servicebus.windows.net/apimqueue/messages";
string sasKeyName = "";
string sasKey = "";
// Set the token lifespan
System.TimeSpan sinceEpoch = System.DateTime.UtcNow.Subtract(new System.DateTime(1970, 1, 1));
var expiry = System.Convert.ToString((int)sinceEpoch.TotalSeconds + 60); //1 minute
string stringToSign = System.Uri.EscapeDataString(resourceUri) + "\n" + expiry;
System.Security.Cryptography.HMACSHA256 hmac = new System.Security.Cryptography.HMACSHA256(System.Text.Encoding.UTF8.GetBytes(sasKey));
var signature = System.Convert.ToBase64String(hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(stringToSign)));
// Format the sas token
var sasToken = String.Format("SharedAccessSignature sr={0}&sig={1}&se={2}&skn={3}",
System.Uri.EscapeDataString(resourceUri), System.Uri.EscapeDataString(signature), expiry, sasKeyName);
return sasToken;
}</value>
</set-header>
</inbound>
<backend>
<!-- base: Begin Product scope -->
<!-- base: Begin Global scope -->
<forward-request />
<!-- base: End Global scope -->
<!-- base: End Product scope -->
</backend>
<outbound />
<on-error />
</policies>
日期:2021年5月23日星期日06:02:25 GMT ocp apim APID:servicebus ocp apim操作ID:发送消息 ocp apim订阅ID:主 ocp apim跟踪位置: 变化:起源


这里的任何帮助都将不胜感激

问题是,我正在API级别确认一个策略,但操作级别的另一个策略正在覆盖它。
在删除操作级别策略后,它起作用。

您是否在servicebus dashboard上看到任何错误?没有错误,事实上,请求甚至没有到达service bus,因为在测试时,我没有看到请求/消息dashboard,所以我不知道为什么APIM会回复200 OK,如果事情进展不顺利,我缺少重写uri模板和设置后端服务的条目。如果这不是完整的策略,我想请求已经被读取了。因此context.Request.Body.As(preserveContent:true);请问您是否有我可以尝试的示例策略?
content-length: 0