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

Azure文件预览-访问IIS和FileZilla中的共享文件夹,azure,azure-virtual-machine,network-shares,Azure,Azure Virtual Machine,Network Shares,我对Azure中2+Windows虚拟机的负载平衡感兴趣。不过,我的主要要求是“上传”文件夹需要在每个VM之间保持一致。该文件夹中的文件由我们的管理员用户FTPed,然后他们需要在C#MVC Web应用程序中选择这些文件。由于您可以通过FTP连接到一个VM,但Web连接可能连接到另一个VM,因此上载必须集中 看起来新的Azure文件(目前正在预览中)会有所帮助,因为它们让我设置了一个每个虚拟机都可以访问的共享驱动器。我的想法是FileZilla服务器将允许FTPing到这个共享“驱动器”,Web

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

看起来新的Azure文件(目前正在预览中)会有所帮助,因为它们让我设置了一个每个虚拟机都可以访问的共享驱动器。我的想法是FileZilla服务器将允许FTPing到这个共享“驱动器”,Web应用程序将访问它以显示内容

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

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

是否有人知道通过网络路径或驱动器号访问此驱动器的任何方法?对于Azure文件,这是不可能的吗?有没有其他解决方案可以跨虚拟机共享某些blob,但将其视为本地驱动器或网络共享

[更新]

这可能会有帮助。设置了共享,并在cmd提示符中以特殊创建的用户身份运行时使用了cmdkey和net use(如中所建议),如果我使用创建的特定帐户和测试连接将IIS中的虚拟文件夹指向此共享,我将获得: 测试:身份验证(绿色勾选:“指定的用户凭据有效”) 测试:授权(红十字会;“路径不存在或无法扩展路径中的环境变量以验证其是否存在。”)


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

对我有效的方法如下:

  • 创建新帐户
  • 将IIS应用程序池标识设置为此特定用户的应用程序池
  • 将IIS应用程序池
    加载用户配置文件
    属性设置为true
  • 以此用户身份启动cmd promt(runas)
  • 如您所述,是否使用cmdkey和net(使用
    /persistent:true
    开关)
  • 创建物理路径设置为UNC共享路径(而不是映射的驱动器)的IIS虚拟目录
  • 第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 $share=“您的存储帐户.file.core.windows.net\yoursharename” $usr=“您的存储帐户” $key=“您的存储密钥” #存储网络共享的凭据-必须为将运行应用程序池的用户执行此操作 cmdkey/add:subclub.file.core.windows.net\images/user:$usr/pass:$key net use z:“\\$share”/user:$usr$key/persistent:yes
    这里的答案证明是有用的

    安装程序
  • 创建新用户{appuser}
  • 以用户身份打开命令窗口
  • runas/user:{appuser}cmd.exe

  • 在新的{appuser}cmd窗口中,使用
  • cmdkey/add:{storage account}.file.core.windows.net /用户:{storage account}/pass:{account key}

  • 将IIS应用程序池设置为使用{appuser} 4b。将LoadUserProfile设置为true
  • 请注意,不需要使用网络。不需要映射驱动器

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

    \{storage account}.file.core.windows.net\


    您是否试图在虚拟机之外通过FileZilla访问文件服务共享?否,@GauravMantri,FileZilla服务器作为虚拟机的FTP服务器在虚拟机上运行。它可以很好地访问VM的内置文件空间,因此我知道端点很好。FileZilla正在工作:它不会列出Azure文件共享的内容,也不会写入它。IIS也无法读取内容。Steve,您是否按照Azure指南遵循了有关如何持久化凭据的指南?当交互式桌面会话未运行时,您的问题听起来像是一个提示不起作用的问题。我还要检查Windows用户是否有作为服务登录的权限。@SimonW是的,我已经这样做了。我的理解是,这是一个每个用户的进程,因此不会自动使Z对IIS或FileZilla用户可用,因此我还以各自用户的身份在提示符运行时重复了这些命令,并确保在IIS中使用我创建的用户对虚拟文件夹进行身份验证,而不是传递。我可以从远程桌面查看驱动器/共享,但FileZilla和IIS似乎无法查看。@SteveOwen您在这方面成功了吗?对于如此详细的答复,我仍停留在同样的问题上,但这对我也不起作用。我的代码无法读取该文件夹,当我在虚拟文件夹上使用测试连接时,IIS管理器的身份验证再次显示绿色勾号(“指定的用户凭据有效”),但授权显示红色十字(“应用程序池标识无法访问路径”)。一切看起来都很好:cmdkey已设置并确认,当以我的用户身份运行时,可以通过cmd提示符进行访问。进程列表显示w2wp.exe以我的用户身份运行。我可以说这个解决方案确实有效。在IIS中测试虚拟目录时,只需忽略红十字授权即可。在那之后,我可以访问Azure文件。我也有同样的问题,无法访问驱动器。进一步的信息。我编写了一个测试页面,它执行cmdkey/list并输出浏览器。我获得“当前存储的凭据:*N”
    File.WriteAllText("\\\\{storage-account}.file.core.windows.net\\share\test.txt", "contents goes here");