【问题标题】:.Net Core (2.1)- Lambda function does work while in 2.2 it doesn't?.Net Core (2.1)- Lambda 函数在 2.2 中可以正常工作吗?
【发布时间】:2019-06-16 14:44:06
【问题描述】:

我使用 .Net Core 2.1 创建了一个简单的空 AWS Lambda 函数:

这是文件夹结构:

(这里是csproj

还有一个 FunctionHandler 获取 DI 并调用一些虚拟方法:

现在让我们运行“Mock Lambda 测试工具”,我们可以看到它有效:

那么问题出在哪里?

我读过here 支持 2.2:

这意味着您现在可以使用 .NET Core 2.2 和 .NET Core 3.0 预览版。 Amazon.Lambda.RuntimeSupport 可用作 GitHub 上的源代码,或作为 NuGet 包。

所以,我创建了一个新的空 lambda 项目,但使用的是 2.2:

相同的代码。但是现在当我运行“Mock Lambda Test Tool”时,我得到一个错误:

AWS .NET Mock Lambda 测试工具 (0.9.2) 发生未知错误导致 进程退出:未能在以下位置找到 deps.json 文件 Amazon.Lambda.TestTool.Runtime.LocalLambdaRuntime.Initialize(字符串 目录)在 E:\JenkinsWorkspaces\Lam\LambdaSandboxCoreCLRApi\Tools\LambdaTestTool\Amazon.Lambda.TestTool\Runtime\LocalLambdaRuntime.cs:line 50 在 Amazon.Lambda.TestTool.Program.Main(String[] args) 中 E:\JenkinsWorkspaces\Lam\LambdaSandboxCoreCLRApi\Tools\LambdaTestTool\Amazon.Lambda.TestTool\Program.cs:line 46 按任意键退出

这是错误:

问题:

这是为什么呢?我在 2.1 中没有任何 deps.json 文件。

那么为什么我在 2.2 中需要它? 另外,错误中出现的这条路径是什么:E:\JenkinsWorkspaces...? 我没有 Jenkins 也没有类似的东西。

【问题讨论】:

  • 你发布时是否有你的 deps.json 文件,它是否会(被复制)到亚马逊?
  • @IlyaChernomordik 我还没有发布。我正处于在 Visual Studio 中运行模拟测试工具的阶段。在 2.1 中它确实有效,但在 2.2 中它没有。 (意思是我可以在 2.1 项目中运行测试工具,但不能在 2.2 中)i.imgur.com/Jd0VjSF.jpg,这是错误i.imgur.com/PLmA7cq.jpg
  • stackoverflow.com/questions/46622113/…,为什么你之前没有,我不确定
  • @IlyaChernomordik 它确实存在于发布文件夹中。但同样,我没有发布。我正在运行 Mock Lambda 测试工具。假设显示 chrome 。当我有一个 2.1 项目时,一切都很好,正如我所展示的。但是当我创建一个 2.2 项目(不是 2.1)时,它会显示一个错误。
  • 可能与此文件的路径或位置有关,也许 lambda 测试工具在运行时指向不同的目录。尝试比较实际运行位置(您可以使用 procexp 检查,例如在 Windows 上或其他方式)。我的意思是检查 .netcore 在 2.1 和 2.2 的哪个位置运行哪个 dll,并检查两个中的 deps.json

标签: c# amazon-web-services .net-core aws-lambda


【解决方案1】:

嗯,我已经找到了原因(我不知道为什么会发生这种情况)但就是这样。忍受我。

当我创建了一个 2.1 lambda 项目时,一切正常。 (显然)

问题出在 2.2 项目上(针对 2.2 和 2.2 的 nugets)。 (这显示了我在问题中显示的错误)

然后我想,如果我将创建一个 2.1 项目然后更新(!)它的 nugets 并将目标更改为 2.2 怎么办? .........成功了!

这真的很奇怪。因为我预计不会。

然后我想,让我们比较一个 2.2 项目(不起作用)的文件系统,以及一个更新为 2.2 项目的 2.1 项目(令人惊讶的是,它确实起作用了)。

右边是严格的 2.2 项目(没有更新),左边是更新到 2.2 的项目:

我注意到一些 .Net core 2.1 文件在升级中但不在严格的 2.2 版本中,所以我想,我怎样才能得到那些丢失的文件?

所以我已经(暂时)将项目目标更改为 2.1:

然后我运行构建

这导致 2.1 文件夹的文件出现:

现在…………,一切都好!!! :

【讨论】:

    猜你喜欢
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2014-07-29
    • 2011-06-09
    相关资源
    最近更新 更多