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