【问题标题】:Is it possible to get environment variable from webapp coming from webjob是否可以从来自 webjob 的 webapp 获取环境变量
【发布时间】:2019-09-03 10:42:30
【问题描述】:

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

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

我的控制台项目是一个“Webjob”,其中引用了我的网络应用项目。

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

有没有什么方法可以运行它,这样当我从我的 webjob 回来时,我可以从我的 web 应用程序中获取环境变量?

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的意思是,我什么时候运行我的控制台应用程序(当我上传它时它将是一个 WebJob)。然后因为我添加了一个项目引用,所以我可以在我的 asp.net core mvc 项目中调用一个方法。从那个方法中,我调用了数据库层。
    • 是的,确实如此,就像我说的那样,在运行它时,您也应该在该项目中重新指定您的环境变量。
    【解决方案2】:

    您不能也不应该从另一个项目中引用 ASP.NET Core 项目并直接点击操作,就好像它们是方法一样。您需要启动 ASP.NET Core 项目并使其运行,然后使用 HttpClient 从控制台应用程序向它发出请求。否则,Startup 中的任何事情都不会发生(因为它没有运行),因此您无法访问配置等服务。

    【讨论】:

    • 控制台应用程序的想法是,当它完成并且我知道代码工作时,我将成为我的 ASP.NET 核心 mvc 项目的 WebJob。然后,我的 ASP.NET CORE mvc 项目将始终在线。然后是否可以访问数据,因为当我从未来的 WebJob 调用它时它正在运行?
    • 嗯,是的。即使在开发中,您也需要运行 Web 应用程序,并通过 HttpClient 向它发出请求。那么,在生产中,它将以相同的方式工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多