我正在从Azure函数的表存储中读取数据。我在表存储绑定中创建了HttpTrigger函数。项目正在使用存储包:

"WindowsAzure.Storage": "8.0.0"


和绑定:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "metadataTable",
      "type": "table",
      "direction": "in",
      "tableName": "metadata",
      "connection": "StorageConnectionString",
      "partitionkey": "some_partition_key"
    }
  ],
  "disabled": false
}


通过模板生成代码,我添加了新的in参数:

#r "Microsoft.WindowsAzure.Storage"

using System;
using System.Net;
using Microsoft.WindowsAzure.Storage.Table;
using Microsoft.WindowsAzure.Storage;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req,
                    IQueryable<MetadataTable> metadataTable, TraceWriter log)
{
.....
}
public class MetadataTable: TableEntity
{
    public MetadataTable():base() { }

    public MetadataTable(string partitionkey, string rowkey):base(partitionkey,rowkey) {}

    public string Data { get; set;  }
}


在保存和运行过程中,出现编译错误:


Microsoft.Azure.WebJobs.Host:错误索引方法
'Functions.HttpTriggerCSharp1'。 Microsoft.Azure.WebJobs.Host:
GenericArguments [0],“ Submission#0 + MetadataTable”,在
'Microsoft.Azure.WebJobs.Host.Tables.TableAttributeBindingProvider + TableToIQueryableConverter 1[TElement]' violates the constraint of type 'TElement'. mscorlib: GenericArguments[0], 'Submission#0+MetadataTable', on 'Microsoft.Azure.WebJobs.Host.Tables.TableAttributeBindingProvider+TableToIQueryableConverter 1 [TElement]'
违反类型参数“ TElement”的约束。


任何人都可以帮我解决这个问题或遇到相同的错误吗?

最佳答案

该错误消息看起来有些怪异,但是请尝试从WindowsAzure.Storage文件中删除project.json引用。运行时会自动引用此软件包,如果您明确包含它,则由于版本不匹配而会出现各种错误。

我从您的代码中创建了一个干净的Azure Function,但没有包引用,并且它可以编译并正常工作。尝试相同。

08-26 16:51
查看更多