我在读取环境变量时遇到问题。我在相同的解决方案下有2个项目。基本,当我来自网络作业时,我需要能够读取环境变量。
这两个项目是asp.net-core-mvc项目和.net核心控制台项目。
我的控制台项目是一个“ Webjob”,引用了我的Web应用程序项目。
当我的“ Webjob”运行时,它在我的Web应用程序中命中了一个方法。然后,我尝试从Web应用程序获取环境变量。返回null,因为未设置。
有什么方法可以运行它,以便当我来自Webjob时可以从Web应用程序获取环境变量吗?
当我的Web应用程序单独运行时,我用来获取变量的代码是
var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
答案 0 :(得分:0)
当您说“它在我的Web应用程序中命中某个方法”时,我假设您的意思是您在WebApp项目中运行一个方法,而不是调用WebAPI端点。
问题在于,VS的调试配置仅适用于运行实际代码的项目,就像在该项目的bin / debug文件夹中可以找到web.config或app.config一样。 这意味着在运行该项目时,还需要在WebJob项目上设置环境变量。
但是:例如,当部署到Azure时,通常会将两个项目托管在同一应用程序服务中,该服务共享,因此可以读取相同的值。
答案 1 :(得分:0)
您不能,也不应从另一个项目中引用ASP.NET Core项目,并且直接将操作视为方法。您需要启动ASP.NET Core项目并使其运行,然后使用HttpClient
从控制台应用程序对其进行请求。否则,Startup
中的所有东西都不会发生(因为它没有运行),因此,您无权访问配置等服务。