类型' System.ArgumentNullException'的例外情况发生在Microsoft.WindowsAzure.Storage.dll但未在用户代码中处理

时间:2015-08-31 22:23:50

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

我尝试连接到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>

我无法理解为什么它不能连接到我的天蓝色存储,因为我使用相同的连接来处理其工作正常的不同项目。

容器变量返回null值,因此错误显示:

附加信息:值不能为空。

2 个答案:

答案 0 :(得分:1)

从代码中的这一行

(define (replace-all haystack needle replacement)    
  ;; most of the processing works on lists 
  ;; of char, not strings.
  (let ((haystack (string->list haystack))
        (needle (string->list needle))
        (replacement (string->list replacement))
        (needle-len (string-length needle)))
    (let loop ((haystack haystack) (acc '()))
      (cond ((null? haystack)
             (list->string (reverse acc)))
            ((prefix? haystack needle)
             (loop (list-tail haystack needle-len)
                   (reverse-append replacement acc)))
            (else
             (loop (cdr haystack) (cons (car haystack) acc)))))))

(replace-all "The cat looks like a cat." "cat" "dog")
; ==> "The dog looks like a dog."

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

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

从您的示例中可能是因为没有给出名称的设置,或者可能是 StorageConnectionString 设置中的结果

答案 1 :(得分:1)

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

在导致异常的代码行中,您正在引用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>