在 .NET Framework 中 运行 时,SQS 中出现 "Request signature does not match" 错误。但不是 .NET 核心
"Request signature does not match" error in SQS when running in .NET Framework. but not .NET Core
我在使用 Amazon SQS 的多目标程序集中有一个组件。在我的单元测试项目中,在 .NET Core 3.1 和 .NET Framework 4.6.1 中 运行,当在 .NET Core 中 运行 时,我可以成功地向 SQS 发送消息,但是在 .NET Framework 中,我'收到 403 禁止错误,“我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”
调试,我已确认密钥正确(AmazonSQSClient.Credentials._lastCredentials 的属性值与我的凭据文件中的值匹配)。
(此屏幕截图中显示的凭据只是临时的。)
我已通读 "Troubleshooting AWS Signature Version 4 errors" but the request signature is being calculated by the AWS code, not me. In fact, "Authenticating Requests (AWS Signature Version 4)" 说,“如果您使用 AWS SDK(请参阅示例代码和库)发送您的请求,则无需阅读此部分,因为 SDK 客户端会进行身份验证使用您提供的访问密钥发送您的请求。"
我已经更新到我正在使用的所有 AWS 包的最新版本。我不知道是我做错了什么,还是组件中的错误。
事实证明,在我的代码中,使用 .NET Framework 时的逻辑没有正确创建队列 URL。然而,关于请求签名的错误消息让我不知所措了几天。
我在使用 Amazon SQS 的多目标程序集中有一个组件。在我的单元测试项目中,在 .NET Core 3.1 和 .NET Framework 4.6.1 中 运行,当在 .NET Core 中 运行 时,我可以成功地向 SQS 发送消息,但是在 .NET Framework 中,我'收到 403 禁止错误,“我们计算的请求签名与您提供的签名不匹配。检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”
调试,我已确认密钥正确(AmazonSQSClient.Credentials._lastCredentials 的属性值与我的凭据文件中的值匹配)。
我已通读 "Troubleshooting AWS Signature Version 4 errors" but the request signature is being calculated by the AWS code, not me. In fact, "Authenticating Requests (AWS Signature Version 4)" 说,“如果您使用 AWS SDK(请参阅示例代码和库)发送您的请求,则无需阅读此部分,因为 SDK 客户端会进行身份验证使用您提供的访问密钥发送您的请求。"
我已经更新到我正在使用的所有 AWS 包的最新版本。我不知道是我做错了什么,还是组件中的错误。
事实证明,在我的代码中,使用 .NET Framework 时的逻辑没有正确创建队列 URL。然而,关于请求签名的错误消息让我不知所措了几天。