我在尝试在Azure Cloud Service中创建虚拟目录时遇到问题,并且虚拟目录已映射到Azure文件服务。
我做了什么
1)在ServiceDefinition.csdef
中使用<Runtime executionContext="elevated" />
用于webrole
2)在WebRole.cs中 我挂载驱动器(如http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/27/persisting-connections-to-microsoft-azure-files.aspx中针对PaaS所述)我也是在应用程序启动时执行的。
public static void MountShare(string shareName,
string driveLetterAndColon,
string username,
string password)
{
if (!String.IsNullOrEmpty(driveLetterAndColon))
{
// Make sure we aren't using this driveLetter for another mapping
WNetCancelConnection2(driveLetterAndColon, 0, true);
}
NETRESOURCE nr = new NETRESOURCE();
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.lpRemoteName = shareName;
nr.lpLocalName = driveLetterAndColon;
int result = WNetAddConnection2(nr, password, username, 0);
if (result != 0 || result != 85)
//85 indicates the drive name is already used. in this scenario, it means the drive is already mapped.
{
throw new Exception("WNetAddConnection2 failed with error " + result);
}
}
3)在WebRole.cs中,我通过以下内容创建虚拟目录,
app.VirtualDirectories.Add("/asset/cms", @"s:\cms");
4)在WebRole.cs中,我使用以下命令使AppPool在我为远程桌面创建的管理员帐户中运行,
applicationPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
applicationPool.ProcessModel.UserName = appPoolUser;
applicationPool.ProcessModel.Password = appPoolPass;
applicationPool.ProcessModel.LoadUserProfile = true;
问题:
我无法从/ asset / cms获得任何东西。 如果我尝试访问内部文件,则会返回500.19 ,并显示“无法访问请求的页面,因为该页面的相关配置数据无效。” ,具体而言,它指向不存在的s:\ cms \ web.config。当我远程访问云服务实例并打开IIS mgr时,我可以看到虚拟目录是否正确创建。
我猜这是一个许可问题。但是我无法编辑虚拟目录的权限,因为它已映射到网络驱动器。
我该如何解决这个问题? - 现在解决了上述问题,云服务可以访问文件服务共享。但是,新问题 - 是否可以使用network_service标识来运行AppPool?