Azure文件预览 - 访问IIS和FileZilla中的共享文件夹

时间:2014-10-09 16:00:48

标签: azure azure-virtual-machine network-shares

我对在Azure中负载均衡2个以上的Windows VM感兴趣。不过,我的主要要求是每个VM之间的'uploads'文件夹需要保持一致。此文件夹中的文件由我们的管理员用户FTP,然后他们需要在C#MVC Web应用程序中选择这些文件。由于您可以通过FTP连接到一个VM,但Web连接可能是另一个,因此上传必须集中。

看起来现在处于预览状态的新Azure文件会有所帮助,因为它们让我设置了每个虚拟机都可以访问的共享驱动器。我的想法是FileZilla Server允许FTP到达这个共享的“驱动器”,Web应用程序将访问它以显示内容。

我已注册Azure文件预览,并设置了共享,为了实验,将其持久映射到Drive Z.我还创建了一个新用户,并确保他们也有与Z持续映射到同一个驱动器。

但我似乎无法对远程桌面外的任何事情做任何事情。 FileZilla尽管已将其服务设置为使用此新帐户登录,但不会显示此驱动器的内容,也不会向其写入任何内容。同样,尽管将Passthrough Authentication切换到虚拟文件夹的新帐户,但我的Web App无法访问文件内容。

有没有人知道通过网络路径或驱动器号访问此驱动器的方法?这是不可能的Azure文件,因为它们是?是否存在跨VM共享某些blob的其他解决方案,但将其视为本地驱动器或网络共享?

[UPDATE]

这可能会有所帮助。设置共享,并在cmd提示符下使用cmdkey和net use运行特殊创建的用户(如http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/27/persisting-connections-to-microsoft-azure-files.aspx中所述),如果我将IIS中的虚拟文件夹指向此共享,则使用创建的特定帐户和测试连接,我得到: 测试:身份验证(绿色勾选;“指定的用户凭据有效”) 测试:授权(红叉;“路径不存在或路径中的环境变量无法扩展以验证它是否存在。”)

虽然仍处于runas cmd提示符下,但我可以访问该共享,因此它不是特定的权限问题。由于某种原因,似乎IIS无法使用该用户访问共享。 Azure文件的限制是我无法专门授予该共享中文件夹的任何类型的权限。

2 个答案:

答案 0 :(得分:5)

对我有用的是:

  1. 创建新帐户
  2. 将IIS应用程序池标识设置为此特定用户
  3. 将IIS应用程序池Load User Profile属性设置为 true
  4. 以此用户(runas)
  5. 启动cmd promt
  6. 执行cmdkey和net use(使用/persistent:true切换),如您所述
  7. 创建IIS虚拟指令,物理路径设置为UNC共享路径(不是映射驱动器)
  8. 针对第5点的小型PowerShell代码段:

    $share = "your-storage-account.file.core.windows.net\yoursharename"
    $usr = "your-storage-account"
    $key = "your-storage-key"
    
    #store credentials for the network share - must be done for the user that will run the app pool
    cmdkey /add:subclub.file.core.windows.net\images /user:$usr /pass:$key
    net use z: "\\$share" /user:$usr $key /persistent:yes
    

答案 1 :(得分:5)

这里的答案证明是有帮助的。

设置

  1. 创建新用户{appuser}
  2. 以用户
  3. 打开命令窗口
      

    runas / user:{appuser} cmd.exe

    1. 在新的{appuser} cmd窗口中使用
    2.   

      cmdkey /add:{storage-account}.file.core.windows.net   / user:{storage-account} / pass:{account-key}

      1. 将IIS应用程序池设置为使用{appuser} 4B。将LoadUserProfile设置为true
      2. 注意不需要净使用。不需要映射的驱动器。

        代码

        现在这是关键部分。从您的应用程序,您必须写入UNC路径。

        \ {存储帐户} .file.core.windows.net \

        离。

        File.WriteAllText("\\\\{storage-account}.file.core.windows.net\\share\test.txt", "contents goes here");