microsoft / AzureStorageExplorer

Easily manage the contents of your storage account with Azure Storage Explorer. Upload, download, and manage blobs, files, queues, tables, and Cosmos DB entities. Gain easy access to manage your virtual machine disks. Work with either Azure Resource Manager or classic storage accounts, plus manage and configure cross-origin resource sharing (CORS) rules.
Creative Commons Attribution 4.0 International
379 stars 87 forks source link

Value for one of the query parameters specified in the request URI is invalid error when using "without current version" filter #4433

Open martinstenhoff opened 3 years ago

martinstenhoff commented 3 years ago

Preflight Checklist

Storage Explorer Version

1.19.1

Platform

Windows

OS Version

Windows 10 2020H2

Architecture

i86

Build Number

20210425.1

Regression From

No response

Bug Description

When selecting either:

Storage Explorer pops up a message saying: Value for one of the query parameters specified in the request URI is invalid. RequestId: Time:

And result window displays "No data available in this blob container"

Steps to Reproduce

  1. Launch Storage Explorer
  2. Navigate to a Blob Container and instead of "Active blobs (default)" or "Active and soft deleted blobs" filter use one of the other two filters:
    • Active blobs and blobs without current version
    • All blobs without current version
  3. Get the error message and

Actual Experience

image

Expected Experience

Not receive an error

Additional Context

I was using a Premium storage account.

Here are some request ids if you want to look on the Azure side:
- RequestId:b1129747-301c-00d1-5fea-436b3a000000 Time:2021-05-08T09:15:48.3514597Z
- RequestId:86807fad-a01c-0013-75eb-43e384000000 Time:2021-05-08T09:18:19.6488388Z
JasonYeMSFT commented 3 years ago

@martinstenhoff I was able to reproduce this on one of my premium storage account and it seems that it was due to that account type don't have the blob versioning support. Could you please check if the storage account has versioning support under the Data Protection blade on portal for that storage account? (Screenshot is the blade I see on my premium storage account reproducing this issue) image

If so, you can simply avoid using that option for now. We need to contact the service team on their plan for blob versioning since this unavailability is not documented clearly.

martinstenhoff commented 3 years ago

You are correct, versioning is not enabled for the account. StorageExplorer should probably remove those options from the drop down if the config for the storage account has

"isVersioningEnabled": null,
JasonYeMSFT commented 3 years ago

Thanks for the suggestion. I'll do some investigation to see what we can do.

sasathy1 commented 2 years ago

In Azure IoT Central, we use this blob storage SDK to export data to blob storage. So, from the data export service, we make a call to the blob storage SDK to which we pass 2 query params:

GET ?restype=container&timeout=61 For the above URI, we get the following error: RESPONSE Status: 400 Value for one of the query parameters specified in the request URI is invalid.

But the 2 query params specified in here seem to be valid. Since this is a customer's storage account, we don't have visibility into whether versioning is enabled or not. Any help here would be greatly appreciated.

JasonYeMSFT commented 2 years ago

@sasahy1 The query parameters don't have versioning involved so it shouldn't be related to the original issue. The parameters look fine to me. Is Azure IoT Central providing independent storage service out of public Azure? I would recommend opening a ticket to their service team to see what goes wrong with your request or if there is a bug in their code.

sasathy1 commented 2 years ago

we are not providing independent storage service out of public Azure. customers have their own storage endpoints and IoT Central uses this go SDK to send data to their storage endpoint. We have no control over their storage account.

JasonYeMSFT commented 2 years ago

@sasathy1 Have you tried contacting the Go SDK team for the problem? We don't use the Go SDK so I don't know exactly what goes wrong here. Sometimes this error has something to do with the API version used but that is in a header, not in the query parameters. If you can capture a complete request including the headers (without sensitive data like access key or token), feel free to share with us and I can try to see what the problem is or forward it to the Go SDK team for them to investigate.