Azure CloudFile-&指定的资源名称包含无效字符。&报价;

Azure CloudFile - amp;quot;The specifed resource name contains invalid characters.amp;quot;(Azure CloudFile-amp;指定的资源名称包含无效字符。amp;报价;)
本文介绍了Azure CloudFile-&指定的资源名称包含无效字符。&报价;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将文件从Azure File Storage下载到本地文件,并收到此异常:

"指定的资源名称包含无效字符。"

代码如下:

if (_cloudFileShare.Exists())
{
      CloudFileDirectory rootDir = _cloudFileShare.GetRootDirectoryReference();    
      CloudFileDirectory tempDir = rootDir.GetDirectoryReference("temp");
      if (tempDir.Exists())
      {
        var file = tempDir.GetFileReference(saveFrom);
        file.DownloadToFile(saveTo, FileMode.Open);// OFFENDING LINE
      }
 }

saveTo参数是一个字符串,值如下所示:

"C:UsersMeAppDataLocalTemp	mpF2AD.tmp"

saveFrom参数如下所示:

https://storageaccount.file.core.windows.net:443/fileshare/temp/tmpA2DA.tmp

我使用以下函数创建参数:

var saveTo = Path.GetTempFileName();

我做错了什么?我没有多少使用Azure的经验。

推荐答案

问题与您的saveFrom变量有关。它应该只包含文件名,而不是整个URL。因此,如果您尝试下载的文件是tmpA2DA.tmp,您的代码应该是:

var file = tempDir.GetFileReference("tmpA2DA.tmp");

请进行此更改,然后重试。它应该可以工作。

以下是我用来测试的完整代码:

    static void FileDownloadTest()
    {
        var cred = new StorageCredentials(accountName, accountKey);
        var account = new CloudStorageAccount(cred, true);
        var client = account.CreateCloudFileClient();
        var _cloudFileShare = client.GetShareReference("fileshare");
        if (_cloudFileShare.Exists())
        {
            CloudFileDirectory rootDir = _cloudFileShare.GetRootDirectoryReference();
            CloudFileDirectory tempDir = rootDir.GetDirectoryReference("temp");
            if (tempDir.Exists())
            {
                var saveTo = System.IO.Path.GetTempFileName();
                var file = tempDir.GetFileReference("tmpA2DA.tmp");
                file.DownloadToFile(saveTo, FileMode.Open);
            }
        }
    }

这篇关于Azure CloudFile-&指定的资源名称包含无效字符。&报价;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)