Azure 功能无法访问 Azure 文件共享

Posted

技术标签:

【中文标题】Azure 功能无法访问 Azure 文件共享【英文标题】:Azure function does not access to Azure files share 【发布时间】:2021-12-27 03:18:47 【问题描述】:

我正在尝试从 Azure 函数的共享文件中读取文件。 在本地一切正常,但是当我部署我的测试项目时出现“connectionString”错误。代码很简单:

 string connectionString = Environment.GetEnvironmentVariable("MyStorage", EnvironmentVariableTarget.Process);
        string FileSharedContainer = Environment.GetEnvironmentVariable("MySharedContainer", EnvironmentVariableTarget.Process);
        string InputCloudFolder = Environment.GetEnvironmentVariable("InputCloudFolder", EnvironmentVariableTarget.Process);
        string ProcessedCloudFolder = Environment.GetEnvironmentVariable("ProcessedCloudFolder", EnvironmentVariableTarget.Process);
        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
        CloudFileClient cloudFileClient = cloudStorageAccount.CreateCloudFileClient();
        CloudFileShare cloudFileShare = cloudFileClient.GetShareReference(FileSharedContainer);
        CloudFileDirectory rootDirectory = cloudFileShare.GetRootDirectoryReference();
        CloudFileDirectory InputfileDirectory = rootDirectory.GetDirectoryReference(InputCloudFolder);
        CloudFileDirectory ProcessedfileDirectory = rootDirectory.GetDirectoryReference(ProcessedCloudFolder);
        List<IListFileItem> fileList = GetAllFilesFromDirectory(InputfileDirectory);
        string fileNames = "";
        foreach (var p in fileList)
        
            var CurrentFile = (CloudFile)p;
            fileNames += CurrentFile.Name +" ";
        
        return new OkObjectResult("N. File processed is: " + fileList.Count + ".  Filenames" + fileNames);

这是一个演示 http 触发函数,即使在 Azure 上也可以从共享文件夹返回文件列表。 它在本地机器上运行良好,但在部署环境中失败并出现此错误:

值不能为空。 (参数'connectionString')

请帮帮我....!

【问题讨论】:

您在App配置中添加了MyStorage连接字符串吗? docs.microsoft.com/en-us/azure/azure-functions/…。你能放一个调试打印语句来检查你的代码是否真的在检索那个值吗?以及您使用 SDK 的 V11 旧版的任何具体原因?新的 V12 版本见nuget.org/packages/Azure.Storage.Files.Shares。 【参考方案1】:

谢谢Anupam Chand。发布您的建议作为答案,以便对面临类似问题的其他社区成员有所帮助。

按照建议,您是否按照下图添加了 mystorage 连接字符串

还尝试调试语句以检查检索值的代码。并尝试使用新版本的 SDK。

dotnet add package Azure.Storage.Files.Shares

更多信息请查看My Storage application 和NuGet Packages

【讨论】:

以上是关于Azure 功能无法访问 Azure 文件共享的主要内容,如果未能解决你的问题,请参考以下文章

从 iis (C# API) 访问 azure 文件共享

从 ASP.NET 应用程序访问 Azure 存储帐户文件共享

使用 python 将 azure Runbook 与 azure 中的文件共享连接起来

利用Azure存储同步服务构建垮分支机构的文件服务器资料同步

在 ARM 模板中使用访问密钥检索在 Azure 容器上装载 Azure 文件共享

无法将文件上传到 Azure 文件共享