URL不是可识别的格式,我可以转换

时间:2013-08-15 16:48:54

标签: c# azure

我想在数据库表中显示存储为字符串的图像。当我运行代码时,我收到错误“无效的URI,格式无法确定”。在表中,实际的字符串是这样的:13d2dr09-377-423c-993e-22db3l390b66

如何转换它以便识别它。

                string sAdImageUrl = myReader.GetString(3);

                var image = new BitmapImage();
                int BytesToRead = 100;

                WebRequest request = WebRequest.Create(new Uri(sAdImageUrl,UriKind.Absolute));                   
                request.Timeout = -1;
                WebResponse response = request.GetResponse();
                Stream responseStream = response.GetResponseStream();
                BinaryReader reader = new BinaryReader(responseStream);
                MemoryStream memoryStream = new MemoryStream();

                byte[] bytebuffer = new byte[BytesToRead];
                int bytesRead = reader.Read(bytebuffer, 0, BytesToRead);

                while (bytesRead > 0)
                {
                    memoryStream.Write(bytebuffer, 0, bytesRead);
                    bytesRead = reader.Read(bytebuffer, 0, BytesToRead);
                }

                image.BeginInit();
                memoryStream.Seek(0, SeekOrigin.Begin);

                image.StreamSource = memoryStream;
                image.EndInit();

                imaPartners.Source = image;

            }
        }

1 个答案:

答案 0 :(得分:1)

好的,根据你的问题和另一个答案中的评论,听起来你有blob名称而不是完整的URI。完整的blob uri将是

http(s)://<cloudstorageaccountname>.blob.core.windows.net/<containername>/<blobname>

由于您已经在使用容器对象,因此您必须已经获取了存储帐户名称(可能来自您的某个应用程序设置),以及您的容器名称(因为您已有容器对象)。 / p>

此时,您应该可以轻松地组装全名。请注意,您可以选择http或https。如果您从网络/应用程序层直接连接到存储,请使用http作为流量保留在数据中心内。另一方面,如果您要创建链接以将网页嵌入最终用户,则应该考虑https,如果数据是敏感的话。

您可以通过代表blob的CloudBlockBlob对象轻松访问完整的Uri。作为一个简单的例子,这是一个控制台应用程序的片段,展示了这一点:

        var connString = CloudConfigurationManager.GetSetting("connectionString");
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);

        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference("images");
        var blob = container.GetBlockBlobReference("fr7_20_2013110753_jpg.jpg");
        var uri = blob.Uri;
        Console.WriteLine(uri);
        Console.ReadLine();

输出:

full url