应用无法访问Azure存储帐户文件

时间:2017-03-27 21:04:02

标签: .net azure

添加网络驱动器,例如net使用T:\ .file.core.windows.net \等,或者通过power shell命令,在Azure Windows VM上工作,文件可以通过电源shell,拖放等方式访问,但应用程序在VM(即使在同一用户下)也无法读取文件。 "无法打开文件... DirectoryNotFoundException - 无法找到路径的一部分..."。到底是怎么回事?它在我的开发机器上本地工作。

2 个答案:

答案 0 :(得分:0)

据我所知,如果您在VM中挂载文件共享,则可以在虚拟机中运行使用标准Windows文件I / O API访问文件共享的代码,例如System.IO提供的代码。 .NET Framework中的命名空间。

根据您的错误消息,我猜您的应用程序的文件路径可能有问题。 我建议您查看应用程序的文件路径,然后重试。

此外,我建议您可以使用Azure文件共享SDK直接访问该文件。

通过这种方式,您可以在不将文件共享安装到VM中的情况下访问该文件。

这是一个小小的演示,希望它能为您提供一些提示:

您可以使用VS。中的nugget包管理器安装Azure存储SDK。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                     "connection string");

            // Create a CloudFileClient object for credentialed access to File storage.
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            // Get a reference to the file share we created previously.
            CloudFileShare share = fileClient.GetShareReference("brandofirstsharetest");

            // Ensure that the share exists.
            if (share.Exists())
            {
                // Get a reference to the root directory for the share.
                CloudFileDirectory rootDir = share.GetRootDirectoryReference();

                // Get a reference to the directory we created previously.
                CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("BrandoTestDirectory");

                // Ensure that the directory exists.
                if (sampleDir.Exists())
                {
                    // Get a reference to the file we created previously.
                    CloudFile file = sampleDir.GetFileReference("test2.txt");

                    // Ensure that the file exists.
                    if (file.Exists())
                    {
                        // Write the contents of the file to the console window.
                        Console.WriteLine(file.DownloadTextAsync().Result);
                    }
                }
            }
            Console.ReadLine(); 

答案 1 :(得分:0)

如何安装Azure文件共享以及使用哪个帐户?可能导致您出现问题的是凭据仅计入特定上下文,上下文是使用的凭据以及如何对其进行身份验证。

例如,如果在非管理模式下从命令行窗口安装Azure文件共享,则您使用的帐户将能够以非管理模式访问该文件共享。如果您以其他用户身份登录,则您将无法再访问文件共享,因为它与您之前使用的用户不同。如果您在管理模式下打开命令行窗口并尝试访问文件共享,则无法实现,因为管理模式和非管理模式是两种不同的上下文。

您必须使用将要使用它的帐户安装驱动器。几年前我尝试在Windows服务中安装和使用文件共享,发现我无法在Windows服务使用的帐户下设置凭据,即使我尝试在Windows服务下运行Windows服务也是如此。特定帐户而不是系统帐户,因为显然作为服务运行是另一个上下文。

如果您无法使用与使用它相同的上下文安装驱动器,则可以通过编程方式安装驱动器。有关persisting connections to Azure File shares的Azure存储团队的原始博客条目之一,有一个示例代码。这就是我最终让我的Windows服务成功运行的方式。