当前位置: 首页 > 知识库问答 >
问题:

如何移植到本地。设置。从azure函数到。NET核心web项目?

易淳
2023-03-14

我有点困惑如何处理Web项目中的本地设置,对于我们的Azure函数来说,这似乎很琐碎,我们使用local.settings.json,然后我们使用下面的ConfigurationBuilder来处理本地与Azure配置设置

private static readonly IConfiguration config = new ConfigurationBuilder()
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();

private static readonly string cosmosDBEndpointUrl = config["cosmosDBEndpointUrl"];
private static readonly string cosmosDBPrimaryKey = config["cosmosDBPrimaryKey"];
private static readonly string cosmosDBName = config["cosmosDBName"];
private static readonly string cosmosDBCollectionNameRawData = config["cosmosDBCollectionNameRawData"];

这对我们的函数很有效,这样它就可以读取本地开发的本地设置和我们发布到的任何环境的Azure设置。

但在我的网络项目中,没有本地的。设置。那么我该如何处理同样的情况呢?

我看了appsettings.json,但格式似乎不同。

共有2个答案

鲜于喜
2023-03-14

正如哈里哈兰所说,在ASP。NET核心web应用程序,我们可以在appsettings中保存应用程序设置。json(例如{“MyConfig”:{“ApplicationName”:“MyApp”,“Version”:“1.0.0”}})在本地,我们可以使用以下代码:

// in Stratup
var config = new ConfigurationBuilder()
     ..SetBasePath(Environment.CurrentDirectory)
     .AddJsonFile("app.settings.json", optional: true, reloadOnChange: true)
     .AddEnvironmentVariables()
     .Build();
in other class
public MyService(IConfiguration configuration){
  var emailConfig = configuration.GetSection("Email");
  var userName = emailConfig["Username"];
}

当我们将web应用部署到Azure时,我们可以直接将这些设置和连接字符串保存在应用程序设置中。然后我们可以把它们读作环境变量。

include Microsoft.Extensions.Configuration;

namespace SomeNamespace 
{
    public class SomeClass
    {
        private IConfiguration _configuration;

        public SomeClass(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        public SomeMethod()
        {
            // retrieve App Service app setting
            var myAppSetting = _configuration["MySetting"];
            // retrieve App Service connection string
            var myConnString = _configuration.GetConnectionString("MyDbConnection");
        }
    }
}
韩弘方
2023-03-14

两者基本相同。你可以拥有任何myFile。配置。json随你所愿。你只需要从启动类中注入它。

var config = new ConfigurationBuilder()
     ..SetBasePath(Environment.CurrentDirectory)
     .AddJsonFile("app.settings.json", optional: true, reloadOnChange: true)
     .AddEnvironmentVariables()
     .Build();

要访问文件中的值,可以使用IConfiguration类。如:

public MyService(IConfiguration configuration){
  var emailConfig = configuration.GetSection("Email");
  var userName = emailConfig["Username"];
}

更好的方法是使用基于环境的. json文件。

 类似资料:
  • 问题内容: 我在使用SQLite的应用程序中曾经存储8-10列。我曾经根据任意多个这些属性的组合来检索数据。现在我想移植到Redis。所以我正在为此开发一个测试应用程序。 但是我无法考虑如何设计我的Redis系统,使我能够基于任何这些属性来检索数据。你们有什么建议/经验吗? 问题答案: 我认为最好的建议是从RDBMS移植到Redis时避免遵循关系模型。除模型之外,一个重要的区别是着眼于数据访问路径

  • 回到RC1,我会这样做: 在RC2中,不再有,并且没有任何东西可以让我返回500类型的IActionResult。 我现在问的方法完全不同了吗?我们是否不再尝试捕获代码?我们是否只是让框架将一个泛型500异常抛回API调用者?对于开发,如何查看确切的异常堆栈?

  • 我试图发送图像和文本字段到APIendpoint,但我收到 不支持的内容类型'多部分/表单数据;边界=---------------------------81801171514357 这是一个ASP. NET Core 2.1 Web API。我有这个: 而我的模特: 然后我使用axios: 我希望这个方法能够运行,而不是抛出异常。但是怎么做呢?我试图补充: 但是没有成功。 然后我试着: 该方法

  • 而且不工作,我的.NET framework 4.5.2命名为T4Generator。 是否可以将此项目添加到核心?

  • 想要在java中使用生成的RSA公钥,在c#函数中加密数据并在Java解密函数中解密。 生成的Java公钥已被替换为c#中的模数标记: C#加密功能: Java解密函数: 第一个问题:在c#XML字符串中替换模数标记中的Java公钥正确吗?指数标签呢?我用了AQAB值。 第二个问题:为什么在解密Java得到这个错误: 经过一些研究,我发现这是一个普遍的错误,什么原因会导致这种错误?

  • 经过前面内核章节的学习,大家对 RT-Thread 也有了不少的了解,但是如何将 RT-Thread 内核移植到不同的硬件平台上,很多人还不一定熟悉。内核移植就是指将 RT-Thread 内核在不同的芯片架构、不同的板卡上运行起来,能够具备线程管理和调度,内存管理,线程间同步和通信、定时器管理等功能。移植可分为 CPU 架构移植和 BSP(Board support package,板级支持包)移