我正在尝试创建一个Azure函数,我在其中使用AutoMapper的一些代码.我是C#,Azure和AutoMapper的新手,我在找到初始化AutoMapper配置的正确方法时遇到了一些麻烦.
MapInitializer.cs:
public static class MapInitializer
{
public static void Activate()
{
Mapper.Initialize(cfg =>
{
// initialize mappings here
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的函数中,我尝试执行以下操作:
Function.cs:
public static class ProcessQueueForIntercom
{
[FunctionName("ProcessQueue")]
public static void Run([QueueTrigger("messages")]string myQueueItem, TraceWriter log)
{
MapInitializer.Activate();
// rest of the code
}
}
Run Code Online (Sandbox Code Playgroud)
现在问题是,我第一次使用此函数处理消息时,一切顺利,代码按预期运行.但是,从第二次开始,我收到一条错误,说我的配置已经初始化.但我真的不知道如何使用Azure函数正确地执行此操作,因为通常您会在App Startup中初始化它,但我不认为Azure Functions(CMIW)有这样的东西,并且我找不到有关如何做到这一点的更多信息.我正在考虑用try catch围绕Activate()调用,并且只记录配置已经加载的警告,但这看起来不是很干净......
我正在尝试在兄弟组件之间共享数据,并通过共享服务执行此操作.加载第一个组件时,它会从我的API中检索一个服务器列表,并用所有检索到的服务器填充一个选择框.现在我想在用户选择新服务器时通知我的其他组件,以便我可以显示它的详细信息.
这是我的服务:
@Injectable()
export class DashboardService {
servers: Server[] = [];
selectedServer = new BehaviorSubject<Server>(null);
setServers(servers: Server[]) {
this.servers = servers;
}
}
Run Code Online (Sandbox Code Playgroud)
带选择框的组件:
@Component({
selector: 'app-servers-select',
template: `
<div class="form-group">
<label>Server</label>
<select class="form-control" [(ngModel)]="this.dashboardService.selectedServer" (ngModelChange)="change($event)">
<option disabled>-- Select server --</option>
<option *ngFor="let server of servers" [ngValue]="server">{{server.Name}}</option>
</select>
</div>`,
styleUrls: ['./servers-select.component.css'],
providers: [ServerService]
})
export class ServersSelectComponent implements OnInit {
servers: Server[] = [];
constructor(private serverService: ServerService, private dashboardService: DashboardService) { }
ngOnInit() {
this.serverService
.getServers()
.subscribe(s => {
this.servers …Run Code Online (Sandbox Code Playgroud)