Note that there are some explanatory texts on larger screens.

plurals
  1. POConsole Application to mount azure cloud drive
    text
    copied!<p>I want to mount vhd from my private container. After google I get that it is only possible through .net. I am more of a JAVA person. I need a batch script or code in c# (So that I can get an exe file) which can automatically run at startup and mount vhd. So I decided to create a console app in order to get exe file.(I have very less knowledge c#/Visual studio) I am using following C# console application to do this.</p> <pre><code>using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Threading; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Diagnostics; using Microsoft.WindowsAzure.ServiceRuntime; using Microsoft.WindowsAzure.StorageClient; using Microsoft.WindowsAzure.Internal; namespace WorkerRole1 { public class WorkerRole : RoleEntryPoint { public override void Run() { // This is a sample worker implementation. Replace with your logic. Trace.WriteLine("WorkerRole1 entry point called", "Starting"); MountDrive(); //while (true) //{ // Thread.Sleep(10000); // Trace.WriteLine("Working", "Information"); //} } public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 12; // For information on handling configuration changes // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. return base.OnStart(); } public void MountDrive() { string connectionStringSettingName = "DefaultEndpointsProtocol=http;AccountName=abc;AccountKey=xyz"; string azureContainerName = "vhds"; string vhdName = "myvhd.vhd"; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionStringSettingName); //CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; LocalResource localCache = RoleEnvironment.GetLocalResource("MyAzureDriveCache"); CloudDrive.InitializeCache(localCache.RootPath, localCache.MaximumSizeInMegabytes); Trace.WriteLine("RootPath =====" + localCache.RootPath); Trace.WriteLine("MaximumSizeInMegabytes =====" + localCache.MaximumSizeInMegabytes); // Just checking: make sure the container exists CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); blobClient.GetContainerReference(azureContainerName).CreateIfNotExist(); // Create cloud drive CloudDrive myCloudDrive = storageAccount.CreateCloudDrive( blobClient .GetContainerReference(azureContainerName) .GetPageBlobReference(vhdName) .Uri.ToString() ); Trace.WriteLine("Uri =====" + blobClient .GetContainerReference(azureContainerName) .GetPageBlobReference(vhdName) .Uri.ToString()); try { myCloudDrive.Create(1024); } catch (CloudDriveException ex) { // handle exception here // exception is also thrown if all is well but the drive already exists } string driveLetter = myCloudDrive.Mount(50, DriveMountOptions.Force);//Here It throws a Exception Trace.WriteLine("Drive =====" + driveLetter); for (int i = 0; i &lt; 10; i++) { System.IO.File.WriteAllText(driveLetter + "\\" + i.ToString() + ".txt", "Test"); } } } } </code></pre> <p>But I keep getting exception <code>ERROR_DEVFABRIC_LOCAL_MOUNT_ONLY</code> at</p> <pre><code>string driveLetter = myCloudDrive.Mount(50, DriveMountOptions.Force); </code></pre> <p>Please tell me where am I going wrong?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload