来自Azure Blob容器的图像未显示在ASP.net页上的ListView中

时间:2019-02-11 22:09:22

标签: asp.net azure listview azure-storage-blobs

我正在从sql服务器数据库中加载Listview。行包含blob ID。我从Blob容器的基本URL构造了blob ID,然后尝试显示图像。什么都没发生。这是我的代码:

protected void PhotosListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    var itm = e.Item;
    ImageButton imgBtn = (ImageButton)itm.FindControl("itemImageButton");
    Label TNlbl = (Label)itm.FindControl("BlobPhotoIDLabel");
    string blobContainerId = (string)Session["BlobContId"];
    string imgUrl = blobClient.StorageUri.PrimaryUri + blobContainerId.ToLower() + "/" + TNlbl.Text;
    imgBtn.ResolveClientUrl(imgUrl);
}

这是标记:

<td runat="server" style="background-color: #DCDCDC; color: #000000;">
                <asp:ImageButton ID="itemImageButton" runat="server" 
                            CommandArgument="<%# Container.DataItem %>" 
                            Width="180" Height="120"
                            OnCommand="itemImageButton_Command"/>
                <br />PhotoId:
                <asp:Label ID="PhotoIdLabel" runat="server" Text='<%# Eval("PhotoId") %>' />
                <br />PhotoTitle:
                <asp:Label ID="PhotoTitleLabel" runat="server" Text='<%# Eval("PhotoTitle") %>' />
        // etc

很麻烦,另一页上的类似代码可以正常工作。我想念什么?我也在数据绑定和数据绑定事件中尝试过。标题和数据库中的其他数据显示正常。构造的Blob网址似乎有效。

1 个答案:

答案 0 :(得分:0)

  

所构建的Blob网址显示为有效。

您可以尝试在浏览器中添加他的Blob网址,以检查图像是否可用。

如果您无法在浏览器中查看它,那么正如Gaurav所说的,请检查您容器的Public Access Level。应该是BlobContainer而不是Private(no anonymous access)

如果该网址有效,请使用以下代码显示图片:

Url=imgBtn.ResolveClientUrl(imgUrl); //Gets a URL that can be used by the browser.
imgBtn.imageUrl(Url);

有关ResolveClientUrl的更多详细信息,您可以参考此article