开发者

Using BlobRequest.CopyFrom fails with 404 Not Found error

Hope you can help.

I'm trying to copy a blob using the Protocol namespace along with a shared access signature, but the WebResponse always throws a 404 Not Found error. I have successfully used the Get/Post/Delete/List methods (where the 404 would be thrown if the permissions were insufficient), but I cannot find the answer here.

Here's some simple code that I am using:

Uri uriFrom = new Uri("file://mymachine/myfile.txt");
Uri uriTo   = new Uri("file://mymachine/myfile1.txt");

//get shared access signature - set all permissions for now
uriTo = GetSharedAccessSignature(uriTo, SharedAccessPermissions.Write | 
SharedAccessPermissions.Read | SharedAccessPermissions.List);

//NOTE: This returns my uriTo object in the following format:
//http://mystoragespace.blob.core.windows.net/mycontainer/steve1.txt?se=2011-07-04T12:17:18Z&sr=b&sp=rwdl&sig=sxhGBkbDJpe9qn5d9AB7/d2LK1aun/2s5Bq8LAy8mis=

//get the account name
string accountName = uriTo.Host.Replace(".blob.core.windows.net", string.Empty);

//build the canonical string
StringBuilder canonicalName = new StringBuilder();
canonicalName.AppendFormat(System.Globalization.CultureInfo.InvariantCulture,
            "/{0}/mycontainer{1}", accountName, uriFrom.AbsolutePath);

//NOTE: my canonical string is now "/mystoragespace/mycontainer/myfile.txt"

//get the request
var request = BlobRequest.CopyFrom(uriTo, 300, canonicalName.ToString(),
            null, ConditionHeaderKind.None, null, null);

request.Proxy.Credentials =开发者_JAVA技巧 CredentialCache.DefaultNetworkCredentials;

//perform the copy operation
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    //do nothing. the file has been copied
}

So, my uriTo seems to have the appropriate permissions (I've tried various combinations) and the canonical string seems to have the correct source string. I'm not using snapshot functionality. The proxy isn't a problem as I've successfully used other methods.

Hope someone can help...

Many regards, Steve


From Creating a Shared Access Signature:

The following table details which operations are allowed on a resource for a given set of permissions.

...

Create or update the content, block list, properties, and metadata of the specified blob. Note that copying a blob is not supported.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜