我正在尝试创建一个 Azure 函数,在其中使用 AutoMapper 的一些代码。我对 C#、Azure 和 AutoMapper 相当陌生,在寻找初始化 AutoMapper 配置的正确方法时遇到了一些困难。
MapInitializer.cs:
public static class MapInitializer
{
public static void Activate()
{
Mapper.Initialize(cfg =>
{
// initialize mappings here
});
}
}
然后在我的函数中,我尝试执行以下操作:
函数.cs:
public static class ProcessQueueForIntercom
{
[FunctionName("ProcessQueue")]
public static void Run([QueueTrigger("messages")]string myQueueItem, TraceWriter log)
{
MapInitializer.Activate();
// rest of the code
}
}
现在的问题是,我第一次用这个函数处理消息时,一切都很顺利,代码按照我的预期运行。但是,从第二次开始,我收到一条错误消息,指出我的配置已初始化。但我真的不知道如何使用Azure Function正确执行此操作,因为通常您会在应用程序启动中初始化它,但我不认为Azure Functions(CMIW)有这样的东西,并且我没有找到太多关于如何具体执行此操作的信息。我正在考虑用 try catch 包围 Activate() 调用,并记录一个配置已加载的警告,但这看起来不太干净......
您只需致电Activate
一次。您可以通过静态构造函数来完成此操作:
public static class ProcessQueueForIntercom
{
static ProcessQueueForIntercom()
{
MapInitializer.Activate();
}
[FunctionName("ProcessQueue")]
public static void Run([QueueTrigger("messages")]string myQueueItem, TraceWriter log)
{
// rest of the code
}
}
或者只是创建一个静态构造函数MapInitializer
本身。
也可以看看这个答案 https://stackoverflow.com/a/45495337/1171619.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)