Amazon S3 バケット内の何かの URL を取得すると、最後に署名を追加して、ユーザーがオブジェクトを表示する権限を持っていることを確認でき、URL は次のようになります。
https://mybucket.amazonaws.com/mykey?AWSAccessKeyId=myaccesskey& Expires=1235241261&Signature= t5vFBWXaN0DvVaWfck9n2%2fmTzOU%3d
これらの URL は、S3 ライブラリから文字列オブジェクトとして返されていたので、そのように渡しました。最近、コードを FxCop で実行したところ、このUri
クラスを使用して URL を渡すことが推奨されました。私は FxCos のアドバイスを受けて、URLstring
プロパティをUri
プロパティに変更しました。ずっと後になって、すべてのオブジェクトが正常にフェッチされているわけではないことに気付くまで、すべてが正常に機能しているように見えました。
この問題の原因は、Uri
クラスToString()
関数がわずかに異なるバージョンの URL を返すことでした。
https://mybucket.amazonaws.com/mykey?AWSAccessKeyId=myaccesskey& Expires=1235241261&Signature= t5vFBWXaN0DvVaWfck9n2/mTzOU=
私の解決策は、クラスのOriginalString
プロパティを使用することでした。Uri
しかし、これについては何かがおかしいと感じています.2つの質問があります.
- FxCops のアドバイスを受けて、
Uri
クラスを使用する必要がありましたか? - Amazon は、URL が多くの手を通過する可能性があり、それらが完全に同じ状態で戻ってくることに依存していないことを認識する必要がありますか?
.Net Uri クラスを使用する場合、URL は常に有効であると確信できますが、より微妙な間違いを犯す可能性があるようです。