【问题标题】:An exception of type 'System.ArgumentNullException' occurred in Microsoft.WindowsAzure.Storage.dll but was not handled in user codeMicrosoft.WindowsAzure.Storage.dll 中出现“System.ArgumentNullException”类型的异常,但未在用户代码中处理
【发布时间】:2015-11-26 01:17:31
【问题描述】:

我正在尝试连接到 Azure 媒体存储以上传文件,但每次尝试上传文件时都会收到错误消息。

错误出现在以下代码部分:

var container = CloudStorageAccount.Parse(
            ConfigurationManager.AppSettings["StorageConnectionString"]).CreateCloudBlobClient()
            .GetContainerReference(ConfigurationManager.AppSettings["StorageContainerReference"]);

应用设置如下:

  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=mediasvczfpr6c9dg9jx2;AccountKey=+DlbXTjZG7bni9LOKaYOxqsxBxXVmzh7BpPzWByBi/Csl9XZ+VRcqMbZxuwcbDIg88o73+6M9ByVLwsHNNyLKQ==" />
    <add key="CloudStorageContainerReference" value="temporary-media" />
    <add key="StorageAccountKey" value ="+DlbXTjZG7bni9LOKaYOxqsxBxXVmzh7BpPzWByBi/Csl9XZ+VRcqMbZxuwcbDIg88o73+6M9ByVLwsHNNyLKQ==" />
    <add key="StorageAccountName" value="mediasvczfpr6c9dg9jx2" />
    <add key="MediaAccountName" value="azurevideoportal" />
    <add key="MediaAccountKey" value="T2yMBqN0mk2O//cX+5RMYhqWOS3ekd0RJ3bLtTO5TgI=" />
  </appSettings>

我不明白为什么它无法连接到我的 Azure 存储,因为我将相同的连接用于其他工作正常的项目。

容器变量返回一个空值,所以错误提示:

附加信息:值不能为空。

【问题讨论】:

  • 你为什么要在 1 行中做所有事情?

标签: asp.net-mvc visual-studio azure-blob-storage azure-media-services


【解决方案1】:

从代码中的这一行

var container = CloudStorageAccount.Parse(
        ConfigurationManager.AppSettings["StorageConnectionString"]).CreateCloudBlobClient()
        .GetContainerReference(ConfigurationManager.AppSettings["StorageContainerReference"]);

我在您的 AppSettings 中没有看到任何名为 StorageContainerReference 的内容。从 Azure 文档本身,我认为这样的方法是正确的 Link to Azure Docs

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("ContainerName");

从您的示例来看,可能是因为没有给定名称的设置,或者可能是 StorageConnectionString 设置中的完整设置

【讨论】:

    【解决方案2】:

    这只是一个简单的变量命名错误:)

    在导致异常的代码行中,您从 Web.config 文件中引用了变量 StorageContainerReference。但是,在您的 Web.config 文件中,该变量名为 CloudStorageContainerReference

    试试这个,它应该会有所帮助:

    <appSettings>
        <add key="webpages:Version" value="2.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="PreserveLoginUrl" value="true" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=mediasvczfpr6c9dg9jx2;AccountKey=+DlbXTjZG7bni9LOKaYOxqsxBxXVmzh7BpPzWByBi/Csl9XZ+VRcqMbZxuwcbDIg88o73+6M9ByVLwsHNNyLKQ==" />
        <add key="StorageContainerReference" value="temporary-media" />
        <add key="StorageAccountKey" value ="+DlbXTjZG7bni9LOKaYOxqsxBxXVmzh7BpPzWByBi/Csl9XZ+VRcqMbZxuwcbDIg88o73+6M9ByVLwsHNNyLKQ==" />
        <add key="StorageAccountName" value="mediasvczfpr6c9dg9jx2" />
        <add key="MediaAccountName" value="azurevideoportal" />
        <add key="MediaAccountKey" value="T2yMBqN0mk2O//cX+5RMYhqWOS3ekd0RJ3bLtTO5TgI=" />
      </appSettings>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2016-02-13
      • 2018-10-25
      • 2016-09-21
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多