我在Azure中创建了一个Web应用程序。这是一个使用microsoft asp .net创建的简单Web应用程序。我下载了我的azure配置文件,并使用visual studio发布到azure web应用程序。 Web应用程序中有一个图像文件夹。当我发布所有上传的图像像魅力。然后我使用了一个使用Web客户端对象的WPF smartclient应用程序,并将其凭据设置为网络凭据以及我的azure帐户的用户ID和密码。但是当该行到达webclient.upload类方法时,我得到了401未经授权的异常。在我看来,当我尝试上传我的证书时,并没有被认为是正确的。如果是IIS,我知道该怎么做。但在AZURE我不知道如何给匿名用户和访问上传图像。这里要考虑的任何意见或要点?
答案 0 :(得分:0)
如果您的图片不是应用程序的静态部分,而是可以从您的应用程序创建(示例用户上传他的图片),我建议使用Azure存储而不是文件系统(您不会丢失用户上传的图像)你下次部署)。
可以从code轻松管理Azure存储,也可以使用CloudBerry Explorer等GUI管理工具。
答案 1 :(得分:0)
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
2.添加课程
public class blobservice
{
public CloudBlobContainer GetCloudBlobContainer()
{
string connString = "DefaultEndpointsProtocol=https;AccountName="";AccountKey=E"";";
string destContainer = "mysample";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(destContainer);
if (blobContainer.CreateIfNotExists())
{
blobContainer.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
return blobContainer;
}
}
3..aspx.cs
blobservice _blobServices = new blobservice();
protected void Page_Load(object sender, EventArgs e)
{
blobservice _blobServices = new blobservice();
Upload();
}
public void Upload()
{
CloudBlobContainer blobContainer = _blobServices.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference("Sampleblob.jpg");
WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData(Server.MapPath("~/Images/active.png"));
using (Stream ms = new MemoryStream(bytes))
{
blob.UploadFromStream(ms);
}
}
protected void btnDelete_Click(object sender, EventArgs e)
{
string Name = "https://bikeimages.blob.core.windows.net/mysample/Sampleblob.jpg";
Uri uri = new Uri(Name);
string filename = System.IO.Path.GetFileName(uri.LocalPath);
blobservice _blobServices = new blobservice();
CloudBlobContainer blobContainer = _blobServices.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);
blob.Delete();
}