我已经学习了几个教程,实际上还有其他活动在 azure 数据工厂中运行。现在,特别是这个不执行任何操作,但它永远不会完成处理。在活动窗口中,尝试,它显示状态:正在运行(0% 完成)。
我正在寻找一个原因,同时也在了解人们如何知道活动在这个阶段发生了什么。有没有办法调试这些东西?我将包括源代码,我敢肯定我可能遗漏了一些东西:
public class MoveBlobsToSQLActivity : IDotNetActivity
{
public IDictionary<string, string> Execute(
IEnumerable<LinkedService> linkedServices, IEnumerable<Dataset> datasets, Activity activity, IActivityLogger logger)
{
logger.Write("Start");
//Get extended properties
DotNetActivity dotNetActivityPipeline = (DotNetActivity)activity.TypeProperties;
string sliceStartString = dotNetActivityPipeline.ExtendedProperties["SliceStart"];
//Get linked service details
Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);
Dataset outputDataset = datasets.Single(dataset => dataset.Name == activity.Outputs.Single().Name);
/*
DO STUFF
*/
logger.Write("End");
return new Dictionary<string, string>();
}
}
更新 1:
在找到这篇文章并按照github repo上的说明进行操作后,我能够调试我的活动。
它在这里Dataset inputDataset = datasets.Single(dataset => dataset.Name == activity.Inputs.Single().Name);
出错,我本来希望它完成执行并出现错误,但在调试器中,它一直在运行,并一直运行到相同的结果,直到管道超时。诡异的。删除了错误,但尽管调试器现在可以完成,但管道仍然没有完成:(。
更新 2:
不确定数据工厂是否以任何方式使用自定义活动中的代码。我做了更改:没有,我删除了带有代码的 zip 文件:没有,只是说活动正在运行。即使假定的代码不再存在,似乎也没有任何改变。我假设它缓存在某个地方。