【发布时间】:2019-09-13 22:02:00
【问题描述】:
尝试使用 CosmosDB 投标创建一个 HttpTrigger v2 Azure 函数,该函数将使用 SqlQuery 从路由数据中查找 ID。这与 Microsoft here 提供的示例非常相似。 我正在使用 VS Code 开发此功能。代码如下:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
namespace some_namespace
{
public static class GetUser
{
[FunctionName("GetUser")]
public static IActionResult Run(
[HttpTrigger(
AuthorizationLevel.Anonymous,
"get",
Route = "user/{id}")] HttpRequest req,
[CosmosDB(
"DbName",
"Users",
ConnectionStringSetting = "CosmosDBConnection",
SqlQuery = "select * from Users u where u.id = {id}")]
IEnumerable<User> users,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
foreach (User user in users)
{
log.LogInformation(user.id);
}
return new OkResult();
}
}
}
用户类在另一个文件中定义。所有编译都很好,我可以将它上传到 Azure,但是当我导航到该函数时,我收到以下错误:
函数 (.../GetUser) 错误:Microsoft.Azure.WebJobs.Host:错误索引方法“GetUser”。 System.Private.CoreLib:无法加载文件或程序集“Microsoft.Azure.WebJobs.Extensions.CosmosDB,版本=3.0.4.0,文化=中性,PublicKeyToken=31bf3856ad364e35”。无法找到或加载特定文件。 (来自 HRESULT 的异常:0x80131621)。 System.Private.CoreLib:无法加载文件或程序集“Microsoft.Azure.WebJobs.Extensions.CosmosDB, Version=3.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。
我已根据this 文章修改了我的 host.json 文件以包含 ExtensionBundle,它目前看起来像这样:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
}
}
上面应该会自动在我的函数中包含对 CosmosDB 扩展的引用,但它似乎没有,或者我缺少其他东西但不知道是什么。
【问题讨论】:
标签: visual-studio-code azure-functions