2

参考:将 Azure 文件服务 CloudFileShare 映射为每个云服务实例上的虚拟目录

我尝试在 Azure 云服务中创建虚拟目录时遇到问题,并且虚拟目录映射到 Azure 文件服务。

我做了什么

1)<Runtime executionContext="elevated" />在 ServiceDefinition.csdef 中用于 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?

4

0 回答 0