我想在azure blob存储中上传文件,并在我自己的应用程序中检索该文件。
我的代码:
protected void btnUploadtoCloud_Click(object sender, EventArgs e)
{
UploadFile();
}
public string UploadFile()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("vest");
blobContainer.CreateIfNotExist();
BlobContainerPermissions containerPermissions = new BlobContainerPermissions();
containerPermissions.PublicAccess = BlobContainerPublicAccessType.Container;
blobContainer.SetPermissions(containerPermissions);
CloudBlob blobText = blobContainer.GetBlobReference(fupPicture.FileName);
blobText.Properties.ContentType = fupPicture.PostedFile.ContentType;
string blobURL = blobText.Uri.ToString();
blobText.UploadFromStream(fupPicture.FileContent);
imgTest.ImageUrl = blobURL;
return blobURL;
}
但我的问题是UploadFile的第一行。我包含图片,因为我也想显示我的参考号。
。
为什么RoleEnvironment
出错。我可能会遗漏一些事情要包括在内。
注意:我有窗口azure帐户,我可以轻松部署其他网站。
修改
Gaurav建议之后我尝试:
string cnn = "<add name=\"testconnectionstring\" DefaultEndpointsProtocol=\"http;AccountName=mystorage;AccountKey=A9Jlajksdh69szut9zOfsxWMD/qLaP3Gy6ID9mIarNmCDasdhlyNlAR9wV0NGjqJUZeM4x6x5bTumLv+1nC51clHDl5GTYYPA==" + " />";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cnn);
但无法正常工作我得错误组合无效。
答案 0 :(得分:1)
您收到此错误的原因是RoleEnvironment
仅在您的代码在本地计算机模拟器或云端的云服务(Web角色)上下文中运行时才可用。
由于它是一个Web应用程序,我猜您将在Azure网站中部署它,您只需使用AppSettingsReader
从Web.Config文件中读取即可。类似的东西:
var rdr = new AppSettingsReader();
string connectionString = (string) rdr.GetValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", typeof(String));
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
如果您的应用程序连接到云存储帐户,您的连接字符串将类似于:
DefaultEndpointsProtocol = https和帐户名=您的帐户名称; AccountKey =您的帐户密钥
要连接到本地存储模拟器,您的连接字符串将如下所示:
UseDevelopmentStorage =真