我有一个活动函数,应该返回一个IEnumerable<IListBlobItem>
,如下所示:
[FunctionName("process_file_GetBlobList")]
public static IEnumerable<IListBlobItem> GetBlobList([ActivityTrigger] string name, ILogger log)
{
string storageConnectionString = @"connstring";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("container");
IEnumerable<IListBlobItem> blobs = new IListBlobItem[0];
foreach (IListBlobItem blobItem in container.ListBlobs())
{
if (blobItem is CloudBlobDirectory)
{
CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
blobs = directory.ListBlobs(true);
}
}
return blobs;
}
在我的Orchestrator中,我按以下方式调用此活动函数:
IEnumerable<IListBlobItem> blobs = await context.CallActivityAsync<IEnumerable<IListBlobItem>>("process_file_GetBlobList", null);
通过调试我没有收到任何错误消息,但是在运行时我得到了以下消息:
失败:无法创建类型的实例 Microsoft.Azure.Storage.Blob.IListBlobItem。类型是接口还是 抽象类,不能实例化。路径 '[0] .StreamWriteSizeInBytes'
有什么想法,如何通过CallActivityAsync
调用我的活动函数?
答案 0 :(得分:0)
将其更改为列表并查看,
List<ListBlobItem> blobs = await context.CallActivityAsync<List<ListBlobItem>>("process_file_GetBlobList", null);
但是,您可以通过将blob更改为var来解决上述错误。
答案 1 :(得分:0)
那是因为您拥有明确无法初始化的Interface列表。您可以创建一个实现IListofBobItems的新类,然后从GetbobList方法返回新创建的类的列表
答案 2 :(得分:0)
我认为{% for ad in ads %}
...
<a class="btn" onclick="showNumber()" id="showNumber"><span class="fa fa-phone"></span> View Phone Number</a>
<input id="phonenum" style="display: none;" type="text" value="{{ ad.user.phone }}">
...
{% endfor %}
行需要重写。尝试<script type="text/javascript">
function showNumber() {
document.getElementById('showNumber').innerHTML = document.getElementById('phonenum').value;
}
</script>