4

我有一个 ASP.NET 应用程序,需要从 Azure 文件共享读取和写入。我无法直接在 Azure 文件共享上设置权限,而是拥有存储帐户密钥和主访问密钥。

我可以在我的服务器上使用“net use”命令将文件共享挂载为驱动器。由于对上一个问题的回答我知道 ASP.NET 将无法看到已安装的驱动器。

我能够在我的本地机器上让它工作,在我的本地用户下运行 IIS 并将天蓝色存储帐户文件共享添加到凭据管理器,但这在服务器上不起作用,所以我错过了一些谜。

在服务器上,如果我尝试使用

Directory.Exists(@"\\storageaccountkey.file.core.windows.net\sharename");

这在 ASP.NET 中不起作用(我怀疑这是因为 ASP.NET 无法对共享进行身份验证)。从 LINQpad 运行此代码确实有效并返回 true。

我已尝试将凭据添加到凭据管理器并在我正在运行凭据管理器的用户下运行我的应用程序池,但我仍然从 Directory.Exists() 返回“假”。

为什么我在服务器上看不到目录?

4

1 回答 1

2

我建议您使用存储客户端库来访问文件共享,查看官方文章https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files /

您可以使用下面的代码而不是Directory.Exists来访问共享:

    // Parse the connection string for the storage account.
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

    // 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("logs");

    // Ensure that the share exists.
    if (share.Exists())
    {
        //do something    
    }
于 2016-03-03T02:49:32.713 回答