我已在虚拟机(Windows Server 2012 R2)中的IIS 8服务器上部署了一个ASP.NET MVC Web应用程序。
azure文件存储映射为此虚拟机Windows Server 2012 R2中的网络驱动器。
现在,我的asp.net mvc web应用程序需要通过c system.io代码读取此映射驱动器的文件和文件夹。默认情况下,不允许IIS访问映射驱动器。
这就是web应用程序抛出system.io异常的原因
“找不到指定的路径z:\”
是的。我也试图通过"\\\\{storage-name}.file.core.windows.net\\{fileshare-name}
但仍然没有成功。
有人能指导我正确的配置和设置,我应该做在IIS和Web应用程序?
最佳答案
最后,我成功地通过iis服务器访问了映射的网络驱动器。
我执行了以下步骤。
在虚拟机上创建新用户帐户。
此新帐户的用户名将是存储帐户名
此用户的密码将是以“=”结尾的存储帐户密钥。
创建此新用户帐户后,我将此用户的帐户类型更改为管理员
转到我的电脑或这台电脑
在地图网络驱动器的帮助下连接网络驱动器。选择。
打开“IIS管理器”窗口,转到应用程序池
选择您的Web应用程序正在使用的应用程序池(在我的例子中是DefaultAppPool,然后单击高级设置…从右侧窗格。
使用新创建的用户帐户名和密码更改此应用程序池的标识。
将“加载用户配置文件”设置为true。
单击“确定”保存更改。
单击右侧窗格中的回收链接以刷新选定的应用程序池。
现在选择默认WE站点下的Web应用程序。
点击基本设置…打开“编辑站点”对话框。
确保应用程序池名称正确。
单击连接为…按钮并选择特定用户单选按钮,然后使用此新创建的用户名(存储帐户名)和密码(存储帐户密钥)设置凭据。
就这样。现在您只需编写标准的C IO代码就可以访问映射驱动器的目录和文件。下面是一个示例。
var allDirs = Directory.GetDirectories("\\\\<storageaccountname>.file.core.windows.net\\<storagefileshare>");
ViewBag.Items = allDirs;
确保只按unc路径格式访问文件和文件夹,就像我在上面的代码中所做的那样。