我正在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。
答案 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>
如果您之后遇到其他类似问题,请同时为这些程序集添加程序集绑定重定向。