Azure - 将虚拟目录映射到云服务中的文件服务共享

时间:2015-09-16 22:54:49

标签: c# azure azure-cloud-services azure-files

参考:Mapping an Azure File Service CloudFileShare as a virtual directory on each instance of a cloud service

我在尝试在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?

0 个答案:

没有答案