gpt4 book ai didi

asp.net - 我可以使用Environment.GetEnvironmentVariable方法从Azure应用程序设置中读取环境变量吗?

转载 作者:行者123 更新时间:2023-12-03 02:10:21 25 4
gpt4 key购买 nike

我正在将 Firebase SDK 添加到服务器。
第一步是设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,
所以我在Azure Service -> Configuration -> App Setting中设置环境变量。
我从kudu检查了环境变量也。
我尝试使用 Environment.GetEnvironmentVariable 方法从 ASP.NET 应用程序获取环境变量,
但它返回 null,并且应用程序设置的所有其他环境变量也返回 null。
我的项目是使用 .NET Framework 4.8 和 MVC5 构建的。
有这方面的资料吗?

using Microsoft.Ajax.Utilities;
using Microsoft.AspNet.Identity;
using Nest;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.Entity;
using System.Linq;
using System.Net.Mail;
using System.ServiceModel.Channels;
using System.ServiceModel.Syndication;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using System.Xml;

namespace ---.Controllers
{
public class HomeController : Controller
{
public async Task<ActionResult> Index(ActionParams param)
{
...

var appsettings = ConfigurationManager.AppSettings;
var local = appsettings["GOOGLE_APPLICATION_CREDENTIALS"];
var production = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS");
ViewBag.localEnv = local;
ViewBag.productionEnv = production;

return View("Home", "Index");
}

这个项目是我公司的,所以屏蔽了一些信息,语言是韩语。

enter image description here

最佳答案

我能够在我的环境中获取 Azure 环境变量。请检查以下解决方法。

  • 使用 MVC 创建了 .NET Framework 应用。
  • 安装了以下 NuGet 软件包
Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration
Microsoft.Configuration.ConfigurationBuilders.Environment
System.Configuration.ConfigurationManager

安装 NuGet 包的步骤

右键单击解决方案资源管理器 => 管理 NuGet 包 => 在浏览选项卡中搜索

enter image description here

  • 在 Web.config 文件中 => 在“配置”部分下添加以下设置
 <configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="DefaultEnvironment" mode="Greedy" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment" />
</builders>
</configBuilders>

<appSettings configBuilders="DefaultEnvironment">
<add key="GOOGLE_APPLICATION_CREDENTIALS" value="Set via an environment variable - for example, dev, test, staging, or production connection string." />
</appSettings>
  • 在 Azure Web 应用配置部分中添加新的应用设置enter image description here

  • 最初本地web.config 文件包含具有某些默认值的appsettings。现在我将使用 Azure 应用服务设置覆盖该值。

  • HomeController中,编写以下代码。

 public ActionResult Index()
{
var appsettings = ConfigurationManager.AppSettings;
var local = appsettings["GOOGLE_APPLICATION_CREDENTIALS"];
var production = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS");
ViewBag.GOOGLE_APPLICATION_CREDENTIALS = local;
ViewBag.GOOGLE_APPLICATION_CREDENTIALS1 = production;
return View();
}
  • 我可以使用两者来获取环境变量
var appsettings = ConfigurationManager.AppSettings;
appsettings["GOOGLE_APPLICATION_CREDENTIALS"];
and
Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS");
  • 在 Home => Index.cshtml 中,将以下代码段添加到文件中的某处
 <h2> @ViewBag.GOOGLE_APPLICATION_CREDENTIALS - Local Settings</h2>
<h2> @ViewBag.GOOGLE_APPLICATION_CREDENTIALS1 - Production Settings</h2>

本地应用输出 enter image description here

已发布的应用输出: enter image description here

  • 如您所见,本地设置已被 Azure 应用设置覆盖。

引用资料取自MSDoc

关于asp.net - 我可以使用Environment.GetEnvironmentVariable方法从Azure应用程序设置中读取环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73538978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com