2

参照先:クラウド サービスの各インスタンスで Azure ファイル サービス CloudFileShare を仮想ディレクトリとしてマッピングする

Azure Cloud Service で仮想ディレクトリを作成しようとすると問題が発生し、仮想ディレクトリが 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 マネージャーを開くと、仮想ディレクトリが正しく作成されていることがわかります。

許可の問題だと思います。しかし、ネットワーク ドライブにマップされているため、仮想ディレクトリのアクセス許可を編集できません。

どうすればこの問題を解決できますか? -- 上記の問題が解決され、クラウド サービスがファイル サービス共有にアクセスできるようになりました。しかし、新しい問題 - network_service ID を使用して AppPool を実行することは可能ですか?

4

0 に答える 0