0

因此,我們正在構建基於Web的音頻流式傳輸平臺,其中音頻文件存儲在BLOB存儲中。我們正在爲BLOB創建一個SAS URL,然後將其提供給JavaScript播放器(極光)。通過SAS訪問Azure blob存儲時禁止零星403

這在大部分情況下工作正常,但是當我切換軌道很多時,在某個點,我開始獲得403響應文件的HEAD請求。

如果我單擊重新發送螢火蟲,重新發送完全相同的請求,然後有時我仍然會得到相同的403錯誤,但一段時間後,請求將再次成功,這意味着URL形成正確。

下面是我得到

403 Server failed to authenticate the request. Make sure the value of 
Authorization header is formed correctly including the signature. 
Transfer-Encoding: chunked Server: Microsoft-HTTPAPI/2.0 
x-ms-request-id: <removed> 
access-control-expose-headers: 
Content-Type,Accept-Ranges,Content-Encoding,Content-Length,Content-Range 
Access-Control-Allow-Origin: * Date: Fri, 12 Aug 2016 06:31:58 GMT 

我開始以爲某種對Blob存儲限​​制被觸發,如連接的最大數量或帶寬限制,可能是全響應甚至是DOS防守機制。 有沒有人有任何建議?

我讀過一些關於存儲診斷的文章,但他們都提到了舊的Azure門戶。我的存儲帳戶僅在新門戶中可見。 所以我的問題是:任何人都可以指導我使用新的Azure門戶來診斷爲什麼請求被拒絕?

編輯: 我已經使用Azure Management Studio來查看存儲帳戶的日誌。我發現這個的logline在那裏,它指定了「SASNetworkError」:

1.0;2016-08-12T10:26:27.7337647Z;GetBlob;SASNetworkError;206;19002;6;sas;;[xxx];blob;"https://[xxx].blob.core.windows.net:443/files/[xxx].flac?sv=2015-04-05&amp;sr=b&amp;si=flacpolicy636065943797947863&amp;sig=XXXXX&amp;sip=[xxx]";"/[xxx]/files/[xxx].flac";8f7d48a3-0001-0017-5983-f499a7000000;0;[xxx]:40690;2015-04-05;637;0;499;0;0;;;"&quot;0x8D35C8CDDD72689&quot;";Monday, 04-Apr-16 13:27:27 GMT;;"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0";"http://[xxx].azurewebsites.net/"; 

看起來這是錯誤的原因,但我無法弄清楚它是什麼,真實失敗。

+0

Azure存儲不會耗盡連接容量 - 這是一個相當龐大的多租戶存儲系統。您是否嘗試過將SAS開始時間稍微設置爲過去,也許是一兩分鐘(並且可能在未來有點結束,如果是有效期短的話)?時鐘漂移可能會導致您的SAS在短時間內無意中失效。 –

+0

感謝大家的建議。我確信Azure可以將它作爲一個系統來處理,但我更多地考慮了我們帳戶的具體限制。我將開始時間留空,但我現在試着將它設置爲昨天。我也將到期時間設置爲未來幾年,但沒有骰子......錯誤仍在發生。 –

回答

0

我發現了什麼導致了我的錯誤:容器上最多有5個命名訪問策略。我爲每個遊戲創建了一個新的訪問策略,並以新名稱進行註冊。 我通過創建一個新策略並將其傳遞給GetSharedAccessSignature調用來解決此問題。

0

根據這一article

SAS請求,由於網絡錯誤,失敗。當客戶端在超時過期之前提前關閉連接時,通常會發生這種情況。

難道會有一個網絡中介,如代理,是關閉連接?

+0

感謝您閱讀那篇文章的鏈接,唐,我還沒有找到。所有的請求都是從瀏覽器完成的,直接進入blob存儲。這發生在多個網絡上。我不明白這可能是由於代理人。這可能是Azure中負載均衡器的失敗嗎? –