Получая URL-адрес для чего-либо в корзине Amazon S3, он может добавить в конец подпись, чтобы подтвердить, что у пользователя есть разрешение на просмотр объекта, и URL выглядит так:
https://mybucket.amazonaws.com/mykey?AWSAccessKeyId=myaccesskey&
Истекает = 1235241261 & Signature = t5vFBWXaN0DvVaWfck9n2% 2fmTzOU% 3d
Эти URL-адреса возвращались из моей библиотеки S3 в виде строковых объектов, и я передавал их таким образом. Недавно я запустил свой код через FxCop, и он рекомендовал использовать класс Uri
для передачи URL-адресов. Я воспользовался советом FxCops и изменил свой URL string
properties на Uri
properties. Казалось, что все работает нормально, пока гораздо позже я не заметил, что не все объекты были возвращены успешно.
Причиной проблемы было то, что функция Uri
class ToString()
вернула бы немного другую версию URL:
https://mybucket.amazonaws.com/mykey?AWSAccessKeyId=myaccesskey&
Истекает = 1235241261 & Signature = t5vFBWXaN0DvVaWfck9n2 / mTzOU =
Мое решение состояло в том, чтобы использовать свойство OriginalString
класса Uri
. Но что-то не так в этом, и у меня есть два вопроса,
- Должен ли я воспользоваться советом FxCops и использовать класс
Uri
?
- Должен ли Amazon понять, что URL-адреса могут проходить через много рук и не зависеть от того, возвращаются ли они точно так же?
При использовании класса .Net Uri я могу быть уверен, что мои URL-адреса всегда действительны, но, похоже, допускаются более тонкие ошибки.