0

我需要为 Azure 容器创建 Azure 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。

任何人都请让我知道我在代码中做错了什么?我需要传递任何额外的参数吗?

4

1 回答 1

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,
                OriginPath=@"/foo2",
                Location = "EastAsia"
        };

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

此外,我建议您可以生成SAS令牌以通​​过 URL 直接访问 blob 文件。

于 2017-04-19T05:18:18.660 回答