无法使用 Azure REST API 删除 Azure 存储 Table

Can't delete Azure Storage Table using Azure REST API

我收到错误消息“服务器无法验证请求。确保授权值 header 的格式正确,包括签名。

我按照微软提供的授权教程,Delete Table, Authentication for the Azure Storage Services

我错过了什么吗?

看来你想delete table via rest api

DELETE https://myaccount.table.core.windows.net/Tables('mytable')

下面的例子我这边没问题,请参考代码生成签名。

string StorageAccount = "account name here";
string StorageKey = "account key here";
string tablename = "table name";

string requestMethod = "DELETE";
string mxdate = "";
string storageServiceVersion = "2015-12-11";

protected void Button1_Click(object sender, EventArgs e)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(string.Format(CultureInfo.InvariantCulture,
    "https://{0}.table.core.windows.net/Tables('{1}')",
    StorageAccount, tablename));

    req.Method = requestMethod;

    //specify request header
    string AuthorizationHeader = generateAuthorizationHeader();
    req.Headers.Add("Authorization", AuthorizationHeader);
    req.Headers.Add("x-ms-date", mxdate);
    req.Headers.Add("x-ms-version", storageServiceVersion);
    req.ContentType = "application/json";

    req.Accept = "application/json;odata=minimalmetadata";

    using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
    {

    }
}

public string generateAuthorizationHeader()
{
    mxdate = DateTime.UtcNow.ToString("R");

    string canonicalizedResource = $"/{StorageAccount}/Tables('{tablename}')"; 

    string contentType = "application/json";

    string stringToSign = $"{requestMethod}\n\n{contentType}\n{mxdate}\n{canonicalizedResource}";  

    HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String(StorageKey));

    string signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign)));

    String authorization = String.Format("{0} {1}:{2}",
        "SharedKey",
        StorageAccount,
        signature
        );

    return authorization;
}