【问题标题】:Azure Functions v3 Could not load file or assembly 'Microsoft.Extensions.Primitives, Version=5.0.0.0Azure Functions v3 无法加载文件或程序集“Microsoft.Extensions.Primitives,版本=5.0.0.0
【发布时间】:2021-06-26 06:27:11
【问题描述】:

在运行一个名为“Test”的天蓝色函数后,我遇到了上述错误,该函数重定向到我们要使用的服务的外部 URL。

 [FunctionName("Test")]
        public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req)
        {
            Log.Information("C# HTTP trigger function processed a request.");
            
            string url = _authenticationService.GetAuthorizationUri().ToString();
            return new RedirectResult(url);

        }

URL 处的站点提示用户授权使用他们的数据,并执行重定向到我们“AuthorizationCallback”的先前授权的 url,以及查询字符串参数。

[FunctionName("AuthorizationCallback")]
        public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req)
        {
            Log.Information("C# HTTP trigger function processed a request.");

            string code = req.Query["code"];
            try
            {
                if (!string.IsNullOrEmpty(code))
                { 
                    await _authenticationService.ExchangeCodeForAccessToken(code);
                    return new OkResult();
                }
            }
            catch (System.Exception)
            {
                return new UnauthorizedResult();
            }
            return new NotFoundResult();
        }

AuthorizationCallback 函数被命中,但在控制台中产生以下错误:

这些是当前项目对解决方案的依赖(设置为启动项目):

我尝试在当前项目中安装 Microsoft.Extensions.Primitives 的最新稳定版本 (5.0.0) 和之前的版本 (3.1.13),但我仍然遇到同样的错误。我注意到无法加载的包在 microsoft.azure.webjobs (3.0.23) 中,在 microsoft.azure.webjobs.extensions.storage (4.0.4) 中,但这些在 另一个项目完全,用于另一个天蓝色功能(blob 触发)。关于如何克服这个错误的任何想法?谢谢大家。

【问题讨论】:

    标签: azure azure-functions azure-http-trigger


    【解决方案1】:

    .NET Core 3 的 Azure Functions 主机使用进程内托管模型,这实质上意味着您可以使用的 Microsoft 程序集版本受到限制。发生的情况是您的项目中的某些内容引用了较新版本的 Microsoft.Extensions.Primitives,但该库的较旧版本已由 Azure Functions 主机应用程序加载。

    对于 Azure Functions .NET Core 3,您应该将所有 Microsoft.Extensions.* 库限制为 v3.x。您当前拥有Microsoft.Extensions.DependencyInjection 5.0.1,应将其更改为 3.x。在Packages 级别或以下任何位置检查任何其他Microsoft.Extensions.* 库(提示:您可以通过在解决方案资源管理器顶部的输入框中输入Microsoft.Extensions 快速找到它们)。您可能需要降级具有 Microsoft.Extensions.Primitives 作为依赖项的其他库。

    可能还可以手动编写bindingRedirect 将新版本指向旧版本。 Microsoft.Extensions.* 软件包在各个版本之间相对稳定,因此可能会起作用。不过,这会让我很紧张。

    【讨论】:

    • 我在访问 HttpRequest Query 对象时遇到了一个相关问题 - Microsoft.Extensions.Primitives v5.0.0 被流氓 Microsoft.Extensions.Logging 和 Microsoft.Extensions.Caching.Memory v5 引用引用。将它们放到 v3 使其工作。我也遇到了日志记录和内存缓存的问题——可能不是无关的:)。很多谷歌搜索都没有成功,直到这个答案,所以删除了一些关键字,所以我可以在下个月再次找到这个!谢谢!
    猜你喜欢
    • 2021-02-24
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2021-01-06
    • 2020-07-01
    • 1970-01-01
    • 2017-07-25
    相关资源
    最近更新 更多