2012-10-22 123 views
1

我得到試圖上傳用下面的代碼文件時出現以下異常時ArgumentNullException該參考正確解析。Azure的斑點調用UploadFile()

Void Run() C:\Inter\Projects\PoC\WorkerRole\WorkerRole.cs (40) 
System.ArgumentNullException: Value cannot be null. 
Parameter name: value 
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() 
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() 
    at Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(Stream source, BlobRequestOptions options) 
    at Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFile(String fileName, BlobRequestOptions options) 
    at EncoderWorkerRole.WorkerRole.ProcessJobOutput(IJob job, String videoBlobToEncodeUrl) in C:\Inter\Projects\PoC\WorkerRole\WorkerRole.cs:line 144 
    at EncoderWorkerRole.WorkerRole.Run() in C:\Inter\Projects\PoC\WorkerRole\WorkerRole.cs:line 40 

有趣的是,我遇到同樣的片段從本地服務器即天青的外面,它工作正常。

想法歡迎,謝謝!

回答

4

發現罪魁禍首!

基本上,問題是在這條線

encodedVideoBlob.Metadata [BlobProperty.Description] =描述;

有一個檢查,以確保沒有設置空或空元數據。通過從Reflector反彙編並搜索ArgumentNullException出現來找到它。

可能是巨大的,趕上並且堆疊起來再拋出一個更有意義的異常:-)

這裏是有趣的方法:

internal static void AddMetadata(HttpWebRequest request, NameValueCollection metadata) 
{ 
    if (metadata != null) 
    { 
     foreach (string str in metadata.AllKeys) 
     { 
      AddMetadata(request, str, metadata[str]); 
     } 
    } 
} 

internal static void AddMetadata(HttpWebRequest request, string name, string value) 
{ 
    CommonUtils.AssertNotNullOrEmpty("value", value); 
    request.Headers.Add("x-ms-meta-" + name, value); 
} 


internal static void AssertNotNullOrEmpty(string paramName, string value) 
{ 
    AssertNotNull(paramName, value); 
    if (string.IsNullOrEmpty(value)) 
    { 
     throw new ArgumentException(Microsoft.WindowsAzure.SR.ArgumentEmptyError, paramName); 
    } 
} 

internal static void AssertNotNull(string paramName, object value) 
{ 
    if (value == null) 
    { 
     throw new ArgumentNullException(paramName); 
    } 
} 
+0

我想事實的元數據不能爲空曾記載某處。 [這裏將是一個很好的開始](https://msdn.microsoft.com/en-us/library/azure/hh225342.aspx) – user1