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

时间:2016-03-02 22:26:12

标签: c# asp.net .net azure azure-storage-files

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

我可以登录我的服务器并使用" net use"命令将fileshare挂载为驱动器。由于previous question的答案,我知道ASP.NET将无法看到已安装的驱动器。

我能够从本地计算机上运行,​​在我的本地用户下运行IIS并将azure存储帐户文件共享添加到凭证管理器,但这在服务器上不起作用,所以我是错过了一些难题。

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

访问共享
Directory.Exists(@"\\storageaccountkey.file.core.windows.net\sharename");

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

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

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

1 个答案:

答案 0 :(得分:2)

我建议您使用Storage Client Library访问文件共享,请查看官方文章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    
    }