通过运行asp.net mvc Web应用程序的IIS访问映射驱动器

Kis*_*pta 8 c# asp.net iis asp.net-mvc azure

我在虚拟机(Windows Server 2012 R2)中的IIS 8服务器上部署了一个asp.net mvc Web应用程序.在此虚拟机Windows Server 2012 R2中,azure文件存储被映射为网络驱动器.现在我的asp.net mvc Web应用程序需要通过C#System.IO代码读取此映射驱动器的文件和文件夹.默认情况下,不允许IIS访问映射的驱动器.

这就是Web应用程序抛出System.IO异常的原因

"找不到指定的路径Z:\"

.我也尝试过,"\\\\{storage-name}.file.core.windows.net\\{fileshare-name} 但仍然没有成功.

有人可以指导我在IIS和Web应用程序中进行正确的配置和设置吗?

Kis*_*pta 9

最后,我成功通过IIS服务器访问映射的网络驱动器.我执行了以下步骤.

  • 在VM上创建新用户帐户.
  • 此新帐户的用户名将是存储帐户名称
  • 此用户的密码为存储帐户密钥,以"=="结尾
  • 创建此新用户帐户后,我将此用户的帐户类型更改为管理员
  • 转到我的电脑此电脑
  • 借助Map network drive ..选项连接网络驱动.
  • 打开IIS管理器窗口,转到应用程序池
  • 选择Web应用程序正在使用的应用程序池(在我的示例中,它是DefaultAppPool,然后从右侧窗格单击Advanced Settings ...).
  • 使用新创建的用户帐户名和密码更改此应用程序池的标识.
  • 加载用户配置文件设置为true.
  • 单击"确定"以保存更改.
  • 单击右侧窗格中的" 回收"链接以刷新选定的应用程序池.
  • 现在选择Default We Site下的Web应用程序.
  • 单击" 基本设置..."以打开" 编辑站点"对话框.
  • 确保应用程序池名称正确.
  • 单击" 连接为..."按钮并选择" 特定用户"单选按钮,然后使用此新创建的用户名(存储帐户名)和密码(存​​储帐户密钥)设置凭据.

而已.现在您可以简单地编写标准C#IO代码来访问映射驱动器的目录和文件.这是一个示例示例.

var allDirs = Directory.GetDirectories("\\\\<storageaccountname>.file.core.windows.net\\<storagefileshare>");
ViewBag.Items = allDirs;
Run Code Online (Sandbox Code Playgroud)

确保您只能通过UNC路径格式访问文件和文件夹,就像我在上面的代码中所做的那样.

  • 我个人认为这是一种危险的方法,您使用ApplicationPools有一个原因。出于安全原因,通常不能使用Web应用程序的管理员帐户。如果要执行任何恶意代码,则可以清除服务器。 (2认同)