2012-10-22 63 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