Azure Functions 2.0 - EventHubTrigger - System.Private.CoreLib:无法加载文件或程序集“FunctionsProject.dll”

2024-05-05

我能够运行具有来自本地和 West US2 消费计划的 eventhub 绑定的函数应用程序。从过去 4 天开始,在我们将所有依赖项目转移到 x64 中构建并将所有 nuget 更新到最新版本之后,函数应用程序开始失败。它甚至无法启动,无法加载functionsproject.dll 本身。即使我将位部署到消费计划,也会出现同样的问题。

  • 此处的函数项目名称 - EventHubConsumers
  • Azure 函数版本 - 2.0
  • Azure 函数工具版本 - 2.28
  • 项目构建配置 - x64
  • 网络版本-NET CORE 2.1
  • Visual Studio 2019 和 2017
Nuget dependencies:

<PackageReference Include="Microsoft.ApplicationInsights" Version="2.10.0" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="3.0.6" /> <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.2.0" /> <PackageReference Include="Microsoft.Jarvis" Version="20190426.1.0-rc" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> <PackageReference Include="Polly" Version="7.1.0" />

我无法提取 FusionLog。我猜函数框架 StartLocator 有自定义逻辑来加载不填充融合日志的库。

我尝试调试LoadFromAssemblyPath(string assemblyPath, bool addProbingPath)在 FunctionAssemblyLoadContext.cs 中抛出此异常。我可以看到程序集 bin 路径并验证我的函数应用程序是否已内置到该文件夹​​本身中。我什至通过在 IlSpy 中打开来验证 dll 的版本和其他详细信息。我无法弄清楚为什么程序集(函数应用程序 dll)按预期存在于该路径中时无法加载。

  • Github 上记录的问题:Link https://github.com/Azure/azure-functions-host/issues/4750

  • 尝试旧版本的 Microsoft.Azure.Webjobs.Extensions.Eventhubs,即尝试版本 3.0.5

  • clean,删除obj、bin然后运行
  • 删除 LocalAppData 中除 2.28 之外的所有旧版本的 AzureFunctionsTools。
  • 从vs2017运行
[FunctionName("WriteToStore")]
public async Task Run([EventHubTrigger("activities", Connection = "EventHubConnectionAppSetting", ConsumerGroup = "%ConsumerGroup%")] EventData[] events,
             [EventHub("failed-activities", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<EventData> outputEvents)
{
  //Logic here
}
More details from Functions Console:

Azure Functions 核心工具(2.7.1505 提交哈希:eb8182995562240ca83dd0e0e3394586cf5fdfa3)

函数运行时版本:2.0.12590.0

[8/4/2019 10:09:25 PM] 构建主机:启动抑制:False,配置抑制:False

[8/4/2019 10:09:26 PM] 主机发生错误

[8/4/2019 10:09:26 PM] System.Private.CoreLib:无法加载文件或程序集“Microsoft..EventHubConsumers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”。

值不能为空。

参数名称:提供者

按任意键继续....[8/4/2019 10:09:27 PM] 构建主机:启动抑制:False,配置抑制:False

[8/4/2019 10:09:27 PM] 发生主机错误

[8/4/2019 10:09:27 PM] System.Private.CoreLib:无法加载文件或程序集“Microsoft..EventHubConsumers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”。

托管环境:生产环境

内容根路径:D:some\EventHubConsumers\bin\x64\Debug\netcoreapp2.1

现在正在收听:http://0.0.0.0:7071 http://0.0.0.0:7071

申请开始了。按 Ctrl+C 关闭。

[8/4/2019 10:09:29 PM] 构建主机:启动抑制:False,配置抑制:False

[8/4/2019 10:09:29 PM] 主机发生错误

[8/4/2019 10:09:29 PM] System.Private.CoreLib:无法加载文件或程序集“Microsoft.some.EventHubConsumers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”。


我在解决了一些问题后就开始工作了。我将记录我遵循的问题和修复。

重复一下,我的函数应用程序配置为使用 x64 构建并在 .Netcore 2.1 上运行

  1. 其中一个依赖项目(程序集)是使用 netstandard 2.0 构建的,而所有其他项目都是使用 Netcore 2.1 构建的。这导致了 x64 的程序集加载问题(尽管该依赖程序集是使用 x64 配置构建的)。这听起来有点奇怪,我不相信这是否是一个解决方案,甚至是一个问题。

  2. Visual Studio 可能运行 x86 核心工具,因此当从 Visual Studio(2017 和 19)运行时,x64 功能应用程序会因程序集加载等而失败。您可以设置项目以在调试时运行外部应用程序。您可以设置“属性”->“调试”来启动“func.exe host start”。

  3. 从 Visual Studio 启动函数应用程序后,我收到“值不能为空。参数 - 路径”异常。

    修复-解释(这里 - Github https://github.com/Azure/azure-functions-host/issues/4645)。 PATH 中缺少 npm 路径。我在 PATH 环境变量中更新了 npm 根路径。

  4. 我必须更新 azure function core 工具并使用“func host start”运行函数应用程序。现在,我使用“func host start”运行应用程序,并将调试器附加到 func.exe (CTRL+ALT+P)。您可以在本地 appdata 文件夹中找到 AzureFunctionTools 文件夹 -%LocalAPPDATA%\AzureFunctionsTools。您可以在releases文件夹中看到azure function core工具的所有版本以及cli和func.exe示例 -AzureFunctionsTools\Releases\2.28.0\cli

  5. 部署的主要问题在于应用程序设置。我不得不更改应用程序平台64 bit在天蓝色门户上。默认情况下,函数应用程序是使用 32 位平台设置创建的。解释这里 - Github https://github.com/Azure/Azure-Functions/issues/651.

函数应用程序不提供带有程序集加载问题的融合日志,这使得很难理解出了什么问题!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Functions 2.0 - EventHubTrigger - System.Private.CoreLib:无法加载文件或程序集“FunctionsProject.dll” 的相关文章

随机推荐

  • 如何将 Font Awesome 4.3.0 与 JSF 集成?

    我已经尝试过这个方法 如何将 webjars org 中的 Font Awesome 与 JSF 结合使用 https stackoverflow com questions 18891768 how to use font awesome
  • Spark:如何从spark shell运行spark文件

    我正在使用CDH 5 2 我能够使用火花外壳运行命令 如何运行包含 Spark 命令的文件 file spark 有没有办法在没有 sbt 的情况下在 CDH 5 2 中运行 编译 scala 程序 在命令行中 您可以使用 spark sh
  • 如何覆盖 attr_protected?

    我的 STI 实施如下 class Automobile lt ActiveRecord Base end class Car lt Automobile end class Truck lt Automobile end class Us
  • 如何将不同层的核心动画一个接一个地链接起来?

    我有一个启用分页的scrollView和N个页面 它们是作为scrollView的子视图的UIView 我正在尝试执行以下操作 用户滚动到第 n 页 此时 之前添加到第 n 页的 7 个 CALayers 即 到页面 scrollView
  • C# 中加密的数据太长,无法在 Java 中解密

    我有一个用 Java 编写的服务器 它在将其发送到客户端之前将其 RSA 密钥转换为 NET 使用的 XML 格式 public String getPublicKeyXML try KeyFactory factory KeyFactor
  • MERGE 命令导致序列号出现间隙

    我试图利用 MERGE 命令来填充 Snowflake 中的维度 为了实现代理键 我创建了一个默认为序列号的列 每当插入新行时该序列号就会自动递增 我在其他数据仓库平台上尝试了类似的方法 但从未引起任何问题 但是 我注意到 每当我在 Sno
  • 是否可以使用 LINQ 检查列表中的所有数字是否单调递增?

    我感兴趣的是 在 LINQ 中是否有一种方法可以检查列表中的所有数字是否单调递增 Example List
  • 如何在 Vaadin 中禁用浏览器缓存

    我的问题很短 希望很容易解决 我怎样才能完全禁用我的浏览器缓存用vaadin实现的webservice 我想完全禁用缓存 因为当我尝试进行一些 PDF 流式传输并在浏览器中显示它们时遇到问题 我已经阅读了有关我的问题的解决方案 例如这里 使
  • Android 密钥库停止工作

    就在最近 我在密钥存储方面遇到了问题 我知道已经有很多关于这个问题的问题了 我已经阅读了所有这些内容并疯狂地用谷歌搜索 Error keytool error java io IOException Keystore was tampere
  • 将外部 jar 放在 JAVA_HOME/lib/ext 目录中是一件坏事吗?

    我们有一个在 JRE 环境中运行的应用程序 该应用程序使用了一些外部 jar 我们已将它们放在 JAVA HOME lib ext 文件夹中 这对我们来说已经工作了很多年 但最近一位新程序员加入了我们的团队 他似乎强调这是一件多么糟糕的事情
  • `knitr` 可以抑制 sql 块中的执行或输出吗?

    下面的文档运行 sql 并显示结果 我不希望显示任何输出 要么不运行该块 要么隐藏输出 有没有办法做到这一点 output html document Hide SQL Output First set up a temporary dat
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key
  • 在 IE9 中,如何使用 watir-webdriver 绕过无效证书屏幕?

    这是显示 该网站的安全证书有问题 的屏幕 标头 这是我尝试单击的链接的代码 tr td nbsp td td align left valign middle h4 img src red shield png border 0 alt N
  • Oracle 中的 TO_Char 数字格式模型

    我不完全理解如何使用 to char 函数将数字转换为具有适当格式模型的字符串 实际数字具有以下格式 使用逗号作为小数点分隔符 始终为 5 个小数 整数最多可达 6 可能是无限的 但目前绝不会超过 6 数字可以是正数或负数 数字可以以 0
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 在Android上保存文件时避免因中断而丢失数据?

    我想知道其他人在 Android 上保存文件时使用什么策略来避免数据丢失 我有几个游戏应用程序 本质上 它们可能会在用户暂停 onPause 时保存游戏状态 保存游戏 这在 99 99 的情况下有效 但每隔一段时间我就会收到一个保存游戏的例
  • 为什么 jQuery 不使用 requestAnimationFrame?

    部分浏览器支持requestAnimationFrame 那么为什么不使用它呢 毕竟已经是自 Google Chrome 10 起受支持 https developer mozilla org en DOM window mozReques
  • PostgreSQL 索引使用分析

    是否有工具或方法可以分析 Postgres 并确定应创建哪些缺失的索引 以及应删除哪些未使用的索引 我在使用 SQLServer 的 分析器 工具执行此操作方面有一些经验 但我不知道 Postgres 中是否包含类似的工具 我喜欢这样来查找
  • 签入时 git-tf 告诉我“无法锁定”;我该如何修复它?

    我正在使用 git tf 推送到 TFS 项目 有时 当我尝试检查 TFS 中的一个或多个提交时 我会收到如下消息 正在连接到 TFS 签入 MyProject 0 git tf 无法锁定 MyProject 这是什么意思 是什么让我无法锁
  • Azure Functions 2.0 - EventHubTrigger - System.Private.CoreLib:无法加载文件或程序集“FunctionsProject.dll”

    我能够运行具有来自本地和 West US2 消费计划的 eventhub 绑定的函数应用程序 从过去 4 天开始 在我们将所有依赖项目转移到 x64 中构建并将所有 nuget 更新到最新版本之后 函数应用程序开始失败 它甚至无法启动 无法