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

C# Azure文件存储中的System.IO命名空间,c#,file,azure,C#,File,Azure,基本上,我已将Azure文件存储映射为网络设备,并设法使以下代码正常工作: public ActionResult Post([FromBody]ConfiguratorApi configuratorApi) { string SourcePath = "Z:\\Skeleton"; string DestinationPath = "Z:\\TMP"; return GenerateConfigFiles(configuratorApi, SourcePath, De

基本上,我已将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中作为应用程序服务(而不是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:“不支持给定路径的格式。”

因为路径就像

此外,我浏览过网络,但大多数帖子都相当陈旧,不再相关。这是可能的(可能是通过SAS共享访问签名),还是我完全走错了方向? 我也对其他解决方案持开放态度


文件夹大小不超过2MB。

根据您的描述,使用
GenerateConfigFiles
方法根据文件系统的路径复制文件。对于在Azure Web App上托管应用程序,我假设您无法装载Azure文件共享。但您可以利用将文件从共享下载到web应用程序的临时文件夹,然后根据需要处理文件,然后保存回共享。对于azure web app下的可用目录访问,您可以遵循下面的文件系统限制/注意事项部分


或者,您需要将应用程序托管到azure云服务或azure VM。

如果您的文件夹以URL的形式提供,那么我认为您必须通过HTTP请求与它们进行交互,特别是如果您处于应用程序服务上下文中,我猜它无法映射驱动器号。或者,您也可以使用SMB地址(\\server\share),直接从应用程序服务映射驱动器时使用该地址(而不是驱动器号)。但是这些文档向您展示了如何使用CloudFileClient以编程方式操作文件系统——基本上,它是一个包装器,用于包装必要的HTTP请求。有关示例,请参见和。感谢您的回复!在发布问题之前,我浏览了文档,但仍然不理解很多东西。这就是为什么我要找有经验的人。此外,现在我正在尝试设置一个SAS,看看它是否有用。到目前为止,我设法在本地运行它,问题是url在开始时不能包含协议内容,因此它应该像“//mystoragename.file.core.windows.net/config/Skeleton”,但是现在,当我部署它时,我得到了未经授权的访问权限异常:对路径“\\mystoragename.file.core.windows.net\config\Skeleton”的访问被拒绝。谢谢您的建议!如果我只是使用临时文件夹作为存储,会被认为是一种不好的做法吗?本地目录下存储的文件可能不会持久化,如果重新启动web应用程序,这些文件可能会被删除。此外,它们不会在web应用的多个实例之间共享。您可以了解详细信息。非常感谢!我完全是通过临时文件夹实现的。