我有一个带有WCF服务的Windows Azure项目作为WebRole。 我在Azure中有一个存储帐户,我想在其中保存文件。
我使用Azure模拟器测试了我的代码。
但是知道我有下一个错误:
Could not find a part of the path 'C:\temp\BatchAzure.log'.
欢迎我正在尝试执行的服务:
string path = @"C:\temp\BatchAzure.log";
var test = service.SaveGezichtBestand(path, "999999");
我正在使用的方法:
public bool SaveGezichtBestand(string filePath, string memberID)
{
bool result = false;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container
CloudBlobContainer container = blobClient.GetContainerReference("facefileblobcontainer");
// Create the container if it doesn't already exist
container.CreateIfNotExist();
//By default, the new container is private, so you must specify your storage account key (as you did above)
//to download blobs from this container.
container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
// Retrieve reference to a blob named "myblob"
CloudBlob blob = container.GetBlobReference(memberID);
try
{
// Create or overwrite the "myblob" blob with contents from a local file
using (var fileStream = System.IO.File.OpenRead(filePath))
{
blob.UploadFromStream(fileStream);
result = true;
}
}
catch (Exception)
{
result = false;
throw;
}
return result;
}
答案 0 :(得分:1)
![在此输入图像说明] [1]嗨
我假设SaveGezichtBestand方法是在WindowsAzure上运行的wcf服务的方法。在这种情况下,C盘没有任何目录,而不是天蓝色的depoyment服务为您创建的目录。如果您不想写入托管Webrole的VM上的光盘(在本例中是WCF服务),则必须在启动任务中创建目录 在de * .csdef configation中
您还必须将directorys.cmd文件添加到您的wcf项目
请记住,在Azure循环使用VM期间,VM的本地磁盘上的任何数据都将丢失。
Azure traings工具包演示“WebAndWorkerRoleEnhancements”
中的更多信息米希尔
答案 1 :(得分:1)
我不是肯定的我会按照你的情况来回顾......
您的服务最初在本地工作,但现在您已部署到azure它没有。您正在从本地客户端使用您的Web服务(不是在azure上,特别是在Web角色上)。
基于上述问题,您要将本地文件路径传递到azure,其中您的webrole正在尝试使用您的路径访问其自己的文件系统上的文件。要解决此问题,您需要将实际文件传递到azure(而不仅仅是路径)。您可以使用流或字节数组。