Azure队列Delete REST API运行正常但返回No Content的代码问题排查
Azure 队列Delete API返回No Content问题说明
- 返回
No Content属于正常预期结果
Azure队列服务的Delete Message REST API官方定义为:删除操作执行成功后返回204 No Content状态码,无额外响应体。当前接口功能运行正常,该返回值不是错误,直接将204状态码作为删除成功的判定标准即可。 - 代码存在签名兼容性隐患
当前代码中canonicalizedResource的构造逻辑不符合Azure Shared Key签名规范:签名用的查询参数值需要使用未经过URL转义的原始值,多参数场景下还需要按参数名字母升序排列。当前场景只有popreceipt一个查询参数所以没有触发错误,后续新增参数时会出现签名失败问题。
优化后的canonicalizedResource构造代码如下:
String canonicalizedResource = string.Format("/{0}/{1}/messages/{2}\npopreceipt:{3}", StorageAccountName, queueName, messageid, Uri.UnescapeDataString(popreceipt) );
内容的提问来源于stack exchange,提问作者Prashant Shukla
相关产品推荐
相关产品推荐

