无法加载类型' Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob'来自assembly' Microsoft.WindowsAzure.Storage,Version = 4.3.0.0

时间:2016-06-23 10:31:19

标签: azure azure-storage custom-activity

我正在Azure数据工厂中运行自定义活动,当我尝试使用CloudAppendBlob时,会发生以下异常。它看起来像版本问题,但无法找到解决方法。我使用Windows Azure Storage 7.0.0编译了代码。请帮忙!

模块中的未知错误:

  

System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 ---> System.TypeLoadException:可以   不加载类型' Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob'   来自assembly' Microsoft.WindowsAzure.Storage,Version = 4.3.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。在   MyDotNetActivity.SampleActivity.Execute(IEnumerable 1 linkedServices, IEnumerable 1个数据集,活动活动,IActivityLogger记录器)at   Microsoft.Azure.Management.DataFactories.Runtime.ActivityExecutor.Execute(对象   job,String configuration,Action`1 logAction)---内部结束   异常堆栈跟踪--- at   System.RuntimeMethodHandle.InvokeMethod(Object target,Object []   参数,签名sig,布尔构造函数)at   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,   Object []参数,Object []参数)at   System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags   invokeAttr,Binder binder,Object []参数,CultureInfo文化)   在   Microsoft.DataPipeline.Compute.HDInsightJobExecution.ReflectingActivityWrapper.Execute()   在   F:_Bld \ 12752 \ 4106 \来源\产品\ COMMON \计算的\ src \ HDIComputeDelegatorJob \ ReflectingActivityWrapper.cs:行   44点   Microsoft.DataPipeline.Compute.HDInsightJobExecution.JobWrapper.RunJob()   在   F:_Bld \ 12752 \ 4106 \来源\产品\ COMMON \计算的\ src \ HDIComputeDelegatorJob \ JobWrapper.cs:行   94点   Microsoft.DataPipeline.Compute.HDInsightJobExecution.Launcher.Main(字符串[]   args)in   F:_Bld \ 12752 \ 4106 \来源\产品\ COMMON \计算的\ src \ HDIComputeDelegatorJob \ Launcher.cs:行   78。

2 个答案:

答案 0 :(得分:7)

我自己遇到了同样的问题。原来,Azure Data Factory仅限于Microsoft.WindowsAzure.Storage的4.3版本。要加载其他版本,您应该查看Microsoft的CrossAppDomainDotNetActivitySample

自述文件:

  

此示例允许您为ADF创建自定义.NET活动,该活动不受ADF启动程序使用的程序集版本的限制(例如,WindowsAzure.Storage v4.3.0,Newtonsoft.Json v6.0.x等)

     

代码包括一个实现app-domain隔离的抽象基类(CrossAppDomainDotNetActivity)和一个使用WindowsAzure.Storage v6.2.0演示的示例派生类(MyDotNetActivity)。

     

注意:ADF SDK公开的公共类型不能跨应用程序域边界进行序列化。因此,派生类必须提供预执行逻辑(PreExecute)以将ADF对象处理为可序列化对象,然后将其传递给核心逻辑(ExecuteCore)。

答案 1 :(得分:0)

在您的app.config中,添加以下assembly binding redirect

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>

如果您之后遇到其他类似问题,请同时为这些程序集添加程序集绑定重定向。