【发布时间】:2020-04-07 20:08:00
【问题描述】:
您好,我正在尝试使用 REST Api 的简单 Azure 函数。 我的环境是 MSVC 2019 并创建了一个简单的 mmApi Fucntion 应用程序
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using AzureFuncApp.Model;
using System.Collections.Generic;
using Microsoft.WindowsAzure.Storage.Table;
using Microsoft.WindowsAzure.Storage;
namespace AzureFuncApp
{
public static class mmApi
{
//static List<Board> boards = new List<Board>();
[FunctionName("CreateBoard")]
public static async Task<IActionResult> CreateBoard(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "board")] HttpRequest req,
[Table("boards", Connection ="AzureWebJobsStorage")] IAsyncCollector<BoardTableEntity> boardTable,
ILogger log)
{
log.LogInformation("Creating a new board.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var input = JsonConvert.DeserializeObject<BoardCreateModel>(requestBody);
var board = new Board() { PlayerCount = input.PlayerCount };
board.Players.Add(input.Player);
await boardTable.AddAsync(board.ToTableEntity());
return new OkObjectResult(board);
}
这是我添加到表存储的这一行 [Table("boards", Connection ="AzureWebJobsStorage")] IAsyncCollector
抛出以下错误
函数 (AzureFuncAppmmApi/CreateBoard) 错误: Microsoft.Azure.WebJobs.Host:索引方法“CreateBoard”出错。 Microsoft.Azure.WebJobs.Host:无法将参数“boardTable”绑定到 输入 IAsyncCollector`1。确保参数类型受支持 绑定。如果您使用绑定扩展(例如 Azure 存储, ServiceBus、Timers 等)确保你已经调用了注册 启动代码中扩展的方法(例如 builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 等)。
我没有关注的是,当我的项目中没有启动文件时,我应该在哪里注册 builder.AddAzureStorage()。
附件是我的项目详细信息,任何帮助和指针都可以使用
【问题讨论】:
-
静态列表存储 //static List
board = new List ();工作正常 -
我会尝试绑定到 CloudTable 而不是 IAsyncCollector 看看这是否有效。在我的项目中工作的 Microsoft.Azure.WebJobs.Extensions.Storage 版本也是 3.0.5。你能试试降级到那个有效吗?
-
还可以尝试删除对 Microsoft.Azure.WebJobs 和 Microsoft.Azure.WebJobs.Core 的 nuget 引用。根据我的经验,引用额外的包会引起很多麻烦。
-
[12/14/2019 10:19:24 PM]“GetBoards”函数出错:Microsoft.Azure.WebJobs.Host:错误索引方法“GetBoards”。 Microsoft.Azure.WebJobs.Host:无法将参数“boardTable”绑定到类型 CloudTable。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。我确实有一个使用 Cloud 的 GET api 我仍然收到错误
-
我还删除了 Microsoft.Azure.WebJobs 和 Microsoft.Azure.WebJobs.Core,仍然没有运气
标签: azure azure-functions azure-table-storage