簡體   English   中英

如何使用asp.net core從appsettings.json獲取配置數據並做出反應

[英]how to get config data from appsettings.json with asp.net core & react

我正在將 asp.net core 與 react/redux 一起使用,並且我正在嘗試將 react/redux 中的配置數據移動到 appsettings.json 文件中。 但是一旦配置數據被移動; ClientApp 如何訪問配置數據?

我正在將 Reactjs 與 Redux starter 一起用於 ASP.NET Core。

更新

如果這不是存儲應用程序配置的推薦方式,請告訴我是什么。

我建議您獨立管理客戶端和服務器配置。

對於服務器配置管理appsettings.json是正確的地方。

在客戶端中,您可以通過以下方式將配置作為環境變量處理:

  1. 為每個環境創建一個配置文件,例如:

    .env.dev .env.test .env.prod

假設您在每個文件中都有“SOME_URL”變量:

.env.dev

SOME_URL=http://localhost:4000/

.env.test

SOME_URL=http://mytesturl/

等等等等

  1. 使用 webpack 環境插件:

    插件:options.plugins.concat([ new webpack.EnvironmentPlugin({ SOME_URL: JSON.stringify(process.env.SOME_URL), ... }), ]),

  2. 這是我用於啟動應用程序的腳本:

    "start": "cross-env env-cmd -f .env.dev 節點服務器",

  3. 在客戶端訪問配置:

    process.env.SOME_URL;

  4. npm i env-cmd

使用 webpack,您將使用在瀏覽器中運行的捆綁代碼。 process.env上下文在瀏覽器中不存在。 它的工作方式是你已經告訴 webpack Environment 插件process.env.SOME_URL的值應該在捆綁的客戶端代碼中可用。 打包時,插件只是在代碼中查找確切的文本process.env.SOME_URL並將其替換為實際值。

我不建議從您的客戶端讀取配置文件。 但是,如果您想這樣做,我建議您創建一個服務來讀取 json 文件並為客戶端公開一些配置。

您可以像這樣從 ASP.Net Core 端進行配置

例如,您的 json 中有這樣的配置

 "EmailSettings": {
    "MailServer": "",
    "MailPort": ,
    "Email": "",
    "Password": "",
    "SenderName": "",
    "Sender": "",
    "SysAdminEmail": ""
  },

所以你需要用config定義匹配的模型

public class EmailSettings
{
  public string MailServer { get; set; }
  public int MailPort { get; set; }
  public string SenderName { get; set; }
  public string Sender { get; set; }
  public string Email { get; set; }
  public string Password { get; set; }
  public string SysAdminEmail { get; set; }
}

然后在 Startup.cs 中注冊

services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));

所以你可以在你的服務中使用

private readonly IOptions<EmailSettings> _emailSetting;

public EmailSender(IOptions<EmailSettings> emailSetting)
{
  _emailSetting = emailSetting;
} 

public string GetConfig(){
    return _emailSetting.Value.SenderName;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM