![](/img/trans.png)
[英]C# Azure ServiceBus / Azure SQL - works locally, does not seem to work when deployed to Azure
[英]C# File Upload works locally; not on Azure
我有一个C#Web应用程序,它将图像文件上传到Azure Blob存储。 我正在从文本框(没有文件上传控制器)传递图像文件的本地路径。 此应用程序可以在本地正常工作。 但是,当我在Azure上发布它时,它会引发异常。
找不到文件(文件名)
要在Azure上运行它应该进行哪些更改?
代码:
CloudBlobContainer container = Program.BlobUtilities.GetBlobClient.GetContainerReference(Container);// container
container.CreateIfNotExists();
container.SetPermissions(new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
CloudBlobDirectory directory = container.GetDirectoryReference(foldername);
// Get reference to blob (binary content)
CloudBlockBlob blockBlob_image = directory.GetBlockBlobReference(imageid);
using (var filestream = System.IO.File.OpenRead(image_path))
{
blockBlob_image.UploadFromStream(filestream);
}
找不到文件(文件名)
Web应用程序发布到Azure时,此异常是由System.IO.File.OpenRead(filePath)
引起的。 如果要使用System.IO.File.OpenRead(filePath),则需要确保可以在WebApp中找到文件路径。
要在Azure上运行它应该进行哪些更改?
如果要在Azure上使用代码,则需要确保可以在Azue网站中找到该文件。 您需要将文件复制到Azure。 如果要将文件上传到Azure blob,则不建议使用。 从那以后,您需要首先将文件复制到Azure WebApp。
另外,正如您提到的,您可以使用FileUpload Controller来做到这一点。
您可能正在使用通往计算机的路径,这在天蓝色时会有所不同。 您可以尝试将路径更改为以下内容:
string path = HostingEnvironment.ApplicationPhysicalPath + @"\YourProjectName\PathToFile"
确定,找到解决方案。 我没有使用文件路径到文本框,而是使用FileUpload Controller。 在后面的代码中
Stream image_path = FileUpload1.FileContent;
实际上,我也曾尝试过使用FileUpload控制器,但是Server.MapPath(FileUpload1.Filename)
和Path.GetFullPath(FileUpload1.FileName)
没有提供正确的路径。
也,
using (var filestream = image_path)
{
blockBlob_image.UploadFromStream(image_path);
}
被替换为
blockBlob_image.UploadFromStream(image_path);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.