无法从程序集加载类型(C#Amazon lambda函数)

无法从程序集加载类型(C#Amazon lambda函数),c#,amazon-web-services,.net-core,aws-lambda,C#,Amazon Web Services,.net Core,Aws Lambda,由于Amazon现在支持C#来构建AWS Lambda函数,我想尝试一下,但在执行测试时遇到了问题 这是我的简单课程: using System; using System.IO; using System.Text; using Amazon.Lambda.Core; //using Amazon.Lambda.Serialization.Json; namespace MyTest { public static class LambdaFunction {

由于Amazon现在支持C#来构建AWS Lambda函数,我想尝试一下,但在执行测试时遇到了问题

这是我的简单课程:

using System;
using System.IO;
using System.Text;

using Amazon.Lambda.Core;
//using Amazon.Lambda.Serialization.Json;

namespace MyTest
{
    public static class LambdaFunction
    {
        public static string Handler(Stream stream)
        {
            return "Hello World";
        }
    }
}
我使用.Net核心运行时编译了它。结果是一个文件夹netstandard1.4,其中包含程序集MyTest.dll文件和MyTest.deps.json文件。这些压缩为.zip的文件将上载到AWS Lambda控制台

在“配置”选项卡中,处理程序定义为:

MyTest::LambdaFunction::Handler
但当我按下测试按钮时,返回的错误消息如下:

{
  "errorType": "LambdaException",
  "errorMessage": "Unable to load type 'LambdaFunction' from assembly 'MyTest, Culture=neutral, PublicKeyToken=null'."
}
注1:在我知道我需要使用.Net Core而不是完整的CLR之前,我得到了一个错误,程序集无法加载,因此我认为程序集现在可以编译了

注2:我已经尝试了处理程序方法的几种参数类型(尽管没有自定义序列化程序,只有流和字符串是受支持的),以及静态/实例类或方法或任何组合,但都没有效果


有谁已经开始工作了,可以给我一些建议吗?

嗯,我想这是其中的一天

答案是,我忘了包含名称空间8|

应该是:

MyTest::MyTest.LambdaFunction::Handler

今天早些时候有同样的问题,我能够解决它,下面是应该传递的正确格式:

AssemblyName::NameSpace.ClassName::FunctionHandlerName

偶然发现了这个问题,但设置程序集名称并不能解决这个问题

这是你做的,是的。。。这是我代码中的一个bug

lambdaintrypoint.cs
立即传递到
Startup.cs
。如果某个依赖项中存在问题或缺少
appsettings.{env}.json
文件,则它将引发异常

这里是另一种检查应用程序是否在生产中运行的方法

$ export ASPNETCORE_ENVIRONMENT=Production
$ dotnet run
在我的例子中,缺少一个设置为require的
appsettings.{env}.json
文件。不幸的是,lambda给了您一个非常匿名的错误,但是错误可能在生产中的
Startup.cs

$ export ASPNETCORE_ENVIRONMENT=Production
$ dotnet run

这对大多数人没有帮助,但有1%的人忽略了一些简单的事情…

我也收到了这个错误消息。在我的例子中,我调用了我的函数“HelloLambda”,但随后复制了一些代码,开始:

名称空间计算器

改成

名称空间HelloLambda


解决了这个问题

我尝试了所有的解决方案,但都不管用

在我的例子中,解决方案是减少
AssemblyName::NameSpace.ClassName::FunctionHandlerName
组合的长度。此组合长度超过128个字符&lambda部署在windows上

将长度减少到小于127个字符开始在配置文件中工作


如果其他人面临类似问题,则添加解决方案。

我也有同样的问题,而添加命名空间则没有help@RomanAsanov发布一个问题,展示你的代码。一定有区别。