Azure文件存储中的System.IO命名空间

时间:2017-12-11 15:24:27

标签: c# file azure

基本上,我已将Azure文件存储映射为网络设备,并设法使以下代码正常工作:

public ActionResult Post([FromBody]ConfiguratorApi configuratorApi)
{
    string SourcePath = "Z:\\Skeleton";
    string DestinationPath = "Z:\\TMP";
    return GenerateConfigFiles(configuratorApi, SourcePath, DestinationPath);
}

这个GenerateConfigFiles实际上做的是根据输入从骨架到tmp文件夹处理某些文件并编辑其中一些文件(使用System.IO)。我想要实现的是在Azure中将应用程序部署为App Service(而不是VM)并继续使用System.IO。我尝试过这样的事情:

public ActionResult Post([FromBody]ConfiguratorApi configuratorApi)
{

    CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
    CloudFileShare share = fileClient.GetShareReference("config");
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    CloudFileDirectory skeletonDir = rootDir.GetDirectoryReference("Skeleton");
    CloudFileDirectory newConfigDir = rootDir.GetDirectoryReference("TMP");


    string SourcePath = skeletonDir.Uri.ToString(); 
    string DestinationPath = newConfigDir.Uri.ToString(); 
    return GenerateConfigFiles(configuratorApi, SourcePath, DestinationPath);
}

然后我得到了

  

System.NotSupportedException:'不支持给定路径的格式。'

因为路径就像

  

https://mystoragename.file.core.windows.net/config/Skeleton

此外,我浏览了网页,但大部分帖子都相当陈旧且不再相关。这有可能(可能是SAS - 共享访问签名)或者我的方向完全错误吗? 我也愿意接受其他解决方案。

文件夹不大于2MB。

1 个答案:

答案 0 :(得分:1)

根据您的描述,GenerateConfigFiles方法用于根据文件系统的路径复制文件。为了在Azure Web App上托管您的应用程序,我假设您无法安装Azure文件共享。但您可以利用storage client library将共享中的文件下载到Web应用程序的临时文件夹中,然后根据需要处理文件,然后保存回您的共享。对于azure web app下的可用目录访问,您可以按照Azure Web App sandbox下的文件系统限制/注意事项部分进行操作。

或者您需要将应用程序托管到azure云服务或azure VM,然后Mount an Azure File share