8

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

看起来,目前处于预览阶段的新 Azure 文件会有所帮助,因为它们让我可以设置每个 VM 都可以访问的共享驱动器。我的想法是 FileZilla Server 将允许通过 FTP 连接到这个共享的“驱动器”,并且 Web 应用程序将访问它以显示内容。

我已经注册了 Azure 文件预览版,并设置了共享,并将其永久映射到 Drive Z 以进行试验。我还创建了一个新用户,并确保他们也具有与 Z 相同的驱动器的持久映射。

但我似乎无法在远程桌面之外对此做任何事情。FileZilla 尽管将其服务设置为使用此新帐户登录,但不会显示此驱动器的内容或向其写入任何内容。同样,尽管将直通身份验证切换到虚拟文件夹的这个新帐户,我的 Web 应用程序也无法访问文件内容。

有谁知道通过网络路径或驱动器号访问此驱动器的任何方式?这对 Azure 文件来说是不可能的吗?是否有任何其他解决方案可以跨 VM 共享一些 blob,但将其视为本地驱动器或网络共享?

[更新]

这可能会有所帮助。设置了共享,并在 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 文件的限制是我不能专门授予该共享中文件夹的任何类型的权限。

4

2 回答 2

5

对我有用的是以下内容:

  1. 创建一个新账户
  2. 将 IIS 应用程序池标识设置为此特定用户
  3. 将 IIS 应用程序池Load User Profile属性设置为true
  4. 以该用户身份启动 cmd 提示符 (runas)
  5. 如您所述,执行 cmdkey 和 net use(带/persistent:true开关)
  6. 创建 IIS 虚拟目录,物理路径设置为 UNC 共享路径(不是映射驱动器)

第 5 点的 PowerShell 小片段:

$share = "你的存储帐户.file.core.windows.net\yoursharename"
$usr = "你的存储账户"
$key = "你的存储密钥"

#store 网络共享凭据 - 必须为将运行应用程序池的用户完成
cmdkey /add:subclub.file.core.windows.net\images /user:$usr /pass:$key
净使用 z: "\\$share" /user:$usr $key /persistent:yes
于 2014-10-24T19:41:08.477 回答
5

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

设置

  1. 创建一个新用户 {appuser}
  2. 以用户身份打开命令窗口

runas /user:{appuser} cmd.exe

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

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

  1. 将 IIS 应用程序池设置为使用 {appuser} 4b。将 LoadUserProfile 设置为 true

注意不需要网络使用。不需要映射的驱动器。

代码

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

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

前任。

File.WriteAllText("\\\\{storage-account}.file.core.windows.net\\share\test.txt", "contents goes here");
于 2015-03-03T19:34:18.490 回答