是否有可能从来自webjob的webapp获取环境变量

时间:2019-09-03 10:42:30

标签: c# .net-core asp.net-core-mvc-2.1

我在读取环境变量时遇到问题。我在相同的解决方案下有2个项目。基本,当我来自网络作业时,我需要能够读取环境变量。

这两个项目是asp.net-core-mvc项目和.net核心控制台项目。

我的控制台项目是一个“ Webjob”,引用了我的Web应用程序项目。

当我的“ Webjob”运行时,它在我的Web应用程序中命中了一个方法。然后,我尝试从Web应用程序获取环境变量。返回null,因为未设置。

有什么方法可以运行它,以便当我来自Webjob时可以从Web应用程序获取环境变量吗?

当我的Web应用程序单独运行时,我用来获取变量的代码是

var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

2 个答案:

答案 0 :(得分:0)

当您说“它在我的Web应用程序中命中某个方法”时,我假设您的意思是您在WebApp项目中运行一个方法,而不是调用WebAPI端点。

问题在于,VS的调试配置仅适用于运行实际代码的项目,就像在该项目的bin / debug文件夹中可以找到web.config或app.config一样。 这意味着在运行该项目时,还需要在WebJob项目上设置环境变量。

但是:例如,当部署到Azure时,通常会将两个项目托管在同一应用程序服务中,该服务共享,因此可以读取相同的值。

答案 1 :(得分:0)

您不能,也不应从另一个项目中引用ASP.NET Core项目,并且直接将操作视为方法。您需要启动ASP.NET Core项目并使其运行,然后使用HttpClient从控制台应用程序对其进行请求。否则,Startup中的所有东西都不会发生(因为它没有运行),因此,您无权访问配置等服务。