0

我需要爲Azure容器創建Azure CDN端點。我正在使用下面的代碼來這樣做。爲天藍色容器創建天藍色cdn端點

Endpoint endpoint = new Endpoint() { 
       IsHttpAllowed = true, 
       IsHttpsAllowed = true, 
       Location = this.config.ResourceLocation, 
       Origins = new List<DeepCreatedOrigin> { new DeepCreatedOrigin(containerName, string.Format(STORAGE_URL, storageAccountName)) }, 
       OriginPath = "/" + containerName,      
      }; 
      await this.cdnManagementClient.Endpoints.CreateAsync(this.config.ResourceGroupName, storageAccountName, containerName, endpoint); 

我提供的所有信息都是正確的,Endpoint正在成功創建。但是當我嘗試訪問它裏面的任何blob。它給出了一個InvalidUrl錯誤。

然而奇怪的是如果我通過門戶使用相同的值創建相同的端點,我可以訪問和下載blob。

任何人請讓我知道我在我的代碼中做錯了什麼?我需要傳遞任何額外的參數嗎?

回答

1

據我所知,如果你想在代碼中創建一個存儲CDN,你需要設置OriginHostHeader的值作爲你的存儲帳戶的URL。

更多細節,你可以參考下面的代碼:

// Create CDN client 
      CdnManagementClient cdn = new CdnManagementClient(new TokenCredentials(token)) 
      { SubscriptionId = subscriptionId }; 
      //ListProfilesAndEndpoints(cdn); 
      Endpoint e1 = new Endpoint() 
      { 
       // OptimizationType = "storage", 
       Origins = new List<DeepCreatedOrigin>() { new DeepCreatedOrigin("{yourstoragename}-blob-core-windows-net", "{yourstoragename}.blob.core.windows.net") }, 
       OriginHostHeader = "{yourstoragename}.blob.core.windows.net", 
       IsHttpAllowed = true, 
       IsHttpsAllowed = true, 
       [email protected]"/foo2", 
       Location = "EastAsia" 
     }; 

     cdn.Endpoints.Create(resourcegroup, profilename, enpointname, e1); 

此外,我建議你可以生成SAS令牌通過網址直接訪問BLOB文件。

+0

嘿白蘭度,非常感謝。似乎我的問題得到解決後,我傳遞了一個額外的參數OriginAuthHeader。我將此標記爲答案。 雖然,你能幫我一個忙嗎?你能否提供我這個信息的來源,他們提到這個參數必須在創建Endpoint的時候?再次感謝。 –

+0

我很抱歉,我無法給你正確的信息。我根據門戶的添加enpoit對話框編寫此參數。它需要OriginHostHeader參數,所以我測試它在我身邊。 –