在 Azure Functions 中 运行 时 Environment.Exit 做什么?

What does Environment.Exit do when run in Azure Functions?

使用 Azure WebJobs,您可以通过调用 Environment.Exit 并返回来强制重启 Web 作业进程。这会强制重新启动 webjob,在我的例子中,它重新加载了一个我有的错误的外部 dll。我最近将一些代码从 WebJobs 移动到函数(出于遗留原因的 v1),但我找不到任何有关在 Azure 函数中使用 Environment.Exit 时发生的情况的信息。整个功能服务器是否退出?是否仅当前调用退出?会发生什么?

其实doc中的方法已经描述了Environment.Exit会做什么。如果你 运行 在本地,它只会终止进程,你的应用程序不会重新启动。

然而,在 azure 中,windows Azure Functions 是 IIS 的宿主,IIS 进程无法完全终止。该方法只会暂时终止进程,不会重新启动它,但是如果您尝试请求 HTTP 触发器 url 或使用队列触发器添加队列消息,它会启动进程。

而且它不会只杀死它自己的进程,如果你有HTTP触发器和队列触发器功能,你使用Environment.Exit杀死一个进程,另一个也会被杀死它也需要时间来启动带触发器。