首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CosmosDB HttpTrigger VS代码Azure函数无法加载程序集

CosmosDB HttpTrigger VS代码Azure函数无法加载程序集
EN

Stack Overflow用户
提问于 2019-09-12 18:15:36
回答 2查看 170关注 0票数 1

尝试创建一个HttpTrigger v2 Azure函数,该函数具有CosmosDB竞标,它将使用SqlQuery从路由数据中查找ID。这与微软这里提供的例子非常相似。我正在使用VS代码开发这个函数。以下是代码:

代码语言:javascript
运行
复制
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();
        }
    }
}

在另一个文件中定义了User类。所有的编译都很好,我可以将它上传到Azure,但是当我导航到函数时,我会得到以下错误:

函数(./GetUser)错误: Microsoft.Azure.WebJobs.Host:错误索引方法'GetUser‘。System.Private.CoreLib:无法加载文件或程序集'Microsoft.Azure.WebJobs.Extensions.CosmosDB,Version=3.0.4.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘。无法找到或加载特定文件。(HRESULT除外: 0x80131621)。System.Private.CoreLib:无法加载文件或程序集'Microsoft.Azure.WebJobs.Extensions.CosmosDB,Version=3.0.4.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘。

我已经修改了我的host.json文件,使其包括了ExtensionBundle,如文章所示,目前它如下所示:

代码语言:javascript
运行
复制
{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

上面的内容应该自动地包含对CosmosDB扩展的引用,但我的函数似乎没有,或者我遗漏了其他东西,但不知道是什么。

EN

回答 2

Stack Overflow用户

发布于 2019-09-12 19:26:39

尝试将Microsoft.Azure.WebJobs.Extensions.CosmosDB安装为NuGet包。

ExtensionBundle似乎是为了当地的发展。

票数 0
EN

Stack Overflow用户

发布于 2019-09-13 14:02:00

我不知道是什么修复了上面的功能来使它工作。有一次,我为使用Microsoft.Azure.WebJobs.Extensions.CosmosDB添加了一个冗余导入,但随后我删除了它,该函数仍然工作。上面的代码不会返回已找到的对象-下面是一个经过修改的工作函数(不需要对每个返回的用户进行日志记录,但我把它放在那里进行调试):

代码语言:javascript
运行
复制
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 OkObjectResult(users);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57912441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档