ASP.net 与 blob 的连接
ASP.net connection with blob
如何在 Azure 上托管的 asp.net 网络应用程序和 Blob 之间创建连接?
当我将文件从本地主机上传到 blob 时,连接工作正常。
但是当我在 azure 上发布网络应用程序时,该应用程序无法将文件存储在 blob 中。我能想到为什么文件没有上传的唯一原因是托管 asp.net 网络应用程序和 blob
之间存在某种连接问题
BlobStorageServices.cs
public class BlobStorageServices
{
public CloudBlobContainer GetCloudBlobContainer()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("ImageStorageAccountConn"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("myimages");
if (blobContainer.CreateIfNotExists())
{
blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
}
return blobContainer;
}
}
HomeController.cs
BlobStorageServices _blobStorageService = new BlobStorageServices();
[HttpPost]
public ActionResult Upload(HttpPostedFileBase image)
{
if (image.ContentLength > 0)
{
CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(image.FileName);
blob.UploadFromStream(image.InputStream);
}
return RedirectToAction("Index");
}
Index.cshtml
<h2>Upload Image</h2>
<p>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="image" />
<input type="submit" value="Upload" />
}
</p>
不确定当我们通过 visual studio 发布 asp.net 应用程序时,BlobStorageServices.cs 文件是否已上传到 Azure。
ImageStorageAccountConn 是连接字符串。
假设您实际上正在使用 Web App(根据您的问题):您正在尝试使用 RoleEnvironment
对象来获取连接字符串。 RoleEnvironment
特定于经典云服务(web/worker 角色实例)。
如何在 Azure 上托管的 asp.net 网络应用程序和 Blob 之间创建连接? 当我将文件从本地主机上传到 blob 时,连接工作正常。 但是当我在 azure 上发布网络应用程序时,该应用程序无法将文件存储在 blob 中。我能想到为什么文件没有上传的唯一原因是托管 asp.net 网络应用程序和 blob
之间存在某种连接问题BlobStorageServices.cs
public class BlobStorageServices
{
public CloudBlobContainer GetCloudBlobContainer()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("ImageStorageAccountConn"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("myimages");
if (blobContainer.CreateIfNotExists())
{
blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
}
return blobContainer;
}
}
HomeController.cs
BlobStorageServices _blobStorageService = new BlobStorageServices();
[HttpPost]
public ActionResult Upload(HttpPostedFileBase image)
{
if (image.ContentLength > 0)
{
CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(image.FileName);
blob.UploadFromStream(image.InputStream);
}
return RedirectToAction("Index");
}
Index.cshtml
<h2>Upload Image</h2>
<p>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="image" />
<input type="submit" value="Upload" />
}
</p>
不确定当我们通过 visual studio 发布 asp.net 应用程序时,BlobStorageServices.cs 文件是否已上传到 Azure。 ImageStorageAccountConn 是连接字符串。
假设您实际上正在使用 Web App(根据您的问题):您正在尝试使用 RoleEnvironment
对象来获取连接字符串。 RoleEnvironment
特定于经典云服务(web/worker 角色实例)。