0
我敢肯定,這是在Windows Azure SDK的限制(使用最新的,1.4),但一定是解決的辦法,而無需使用人工REST ...Azure CloudBlob SetMetadata將失敗,並顯示「指定的元數據無效,它具有不允許的字符。」
代碼:
CloudBlob blob = container.GetBlobReference(url); // works
blob.UploadByteArray(bytes); // works
blob.Metadata["test"] = "public, max-age=259200"; // works
// FAILS with "The metadata specified is invalid. It has characters that are not permitted."
blob.Metadata["x-ms-blob-cache-control"] = "public, max-age=259200";
blob.SetMetadata(); // FAILS due to the 2nd meta data
從我的測試中可以清楚地看到客戶端由於這些破折號而爆炸了,但我想不出有什麼辦法解決這個問題。設置緩存控制是非常重要的,常見的操作,這讓我感到困惑,爲什麼我找不到其他人報告這個問題。
我也嘗試編碼數據,技術上不應該是必要的,但出於絕望,我反正做了。想法?
元數據是從不同標題...如果允許,blob.Metadata [ 「X-MS-團塊-緩存控制」]將發出的「報頭X-MS-元X-MS-斑點-cache控制」。 (「x-ms-meta」是專門用於將元數據與其他類型標題區分開來的。) – smarx
通常,請注意,有關元數據的規則是密鑰必須遵循C#標識符命名規則:http:// msdn。 microsoft.com/en-us/library/dd179414.aspx。 (這就是爲什麼你有錯誤。) – smarx