当应用程序托管在Windows VM中的IIS上时,无法将文件复制到Azure文件共享装载的驱动器

zqdjd7g9  于 2023-01-21  发布在  Windows
关注(0)|答案(1)|浏览(122)

我已创建Windows虚拟机并将Azure文件共享驱动器装载为Z:。我的存储帐户名称为onegbuploadfileshare,文件共享名称为onefileshare
我已经写了一个代码写入本地文件夹文件到Azure文件共享。(代码参考:https://learn.microsoft.com/en-us/dotnet/api/overview/azure/storage.files.shares-readme?view=azure-dotnet)。然后将应用程序托管在Windows VM中的IIS上。
但本地文件未复制到Azure文件共享。
我的源文件路径是C:\pubish\Files\1gb.test,目标文件路径是@“z:\temp\newfile.test”,其中z驱动器是装载的驱动器。
我还尝试了编程

  1. Dos copy命令接近进程启动信息。参数= @"/C copy /a C:\pubish\Files\1gb.test \onegbuploadfileshare.file.core.windows.net\一个文件共享\临时”或/C copy /a C:\pubish\Files\1gb.test Z:\一个文件共享\临时
    1.共享客户端方法
    1.方位复制法
    但无法以任何方式将文件保存到文件共享。代码正在将c:\source文件复制到c:\dest文件。
    我错过了IIS或代码的什么吗?任何人都可以提供解决方案。
zte4gxcn

zte4gxcn1#

我可以使用AZ Copy上传文件,并按照以下步骤在Azure中创建共享。
使用Az-copy将文件复制到Azure容器。

文件已复制到Azure门户。

string filePath = @"C:\Temp\sample.txt";
            string azurePath = "https://storagerajesh114.blob.core.windows.net/sample/sample.txt";
            string key = "Storage Access Key";

            string cmd = $"AzCopy /Source:{filePath} /Dest:{azurePath} /DestKey:{key} /S";

            using (Process proc = new Process())
            {
                proc.StartInfo.FileName = "cmd.exe";
                proc.StartInfo.Arguments = $"/C {cmd}";
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.CreateNoWindow = true;
                proc.Start();
                proc.WaitForExit();
                Console.WriteLine(proc.StandardOutput.ReadToEnd());
            }

使用以下代码创建了共享并上载了文件。

string connectionString = "Connection_String";

            string shareName = "share";
            string dirName = "Test";
            string fileName = "sample-file";

            string localFilePath = @"C:\Temp\sample.txt";

            ShareClient share = new ShareClient(connectionString, shareName);
            share.Create();

            ShareDirectoryClient directory = share.GetDirectoryClient(dirName);
            directory.Create();

            ShareFileClient file = directory.GetFileClient(fileName);
            using (FileStream stream = File.OpenRead(localFilePath))
            {
                file.Create(stream.Length);
                file.UploadRange(
                    new HttpRange(0, stream.Length),
                    stream);
            }

您需要在下面屏幕截图中提到的代码中使用连接字符串。

复制连接字符串并在代码中使用它。

共享文件夹创建完毕。

引用自Azure Storage File Shares client
以及
AzCopy公司

相关问题