簡體   English   中英

Microsoft.WindowsAzure.Storage.dll中發生類型'System.ArgumentNullException'的異常,但未在用戶代碼中處理

[英]An exception of type 'System.ArgumentNullException' occurred in Microsoft.WindowsAzure.Storage.dll but was not handled in user code

我正在嘗試連接到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存儲器,因為我將相同的連接用於可以正常工作的其他項目。

容器變量返回一個空值,因此錯誤顯示:

附加信息:值不能為null。

這只是一個簡單的變量命名錯誤:)

在導致異常的代碼行中,您引用的是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>

從代碼中的這一行

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

我在您的AppSettings中沒有看到任何名為StorageContainerReference的內容 從Azure文檔本身,我認為類似這樣的方法是鏈接到Azure文檔的正確方法

// 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設置中的一項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM