繁体   English   中英

从 appsettings.json 访问文件路径,用于 docker linux

[英]Access file path from appsettings.json for docker linux

在我的 asp .net 核心 web 应用程序中,我从appsettings.json访问一些文件路径。 并在那里创建一个包含一些内容的新文件。 以下是我的appsettings.json

{
  "root_privatekeylocation": "C:\\CARepository\\Root\\rootprivatekey.pem",
  "root_publickeylocation": "C:\\CARepository\\Root\\rootpublickey.pem",
  "crl_location": "C:\\CARepository\\CRL\\Crl.crl",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

这适用于 windows,因为它创建目录CARepositoryRoot和文件rootprivatekey.pem 以下是创建这些的代码:

string pathFromConfig= Configuration["root_privatekeylocation"];
string privateKey = textWriter.ToString();
//if directory not exist then create
System.IO.FileInfo file = new System.IO.FileInfo(pathFromConfig);
file.Directory.Create(); // If the directory already exists, this method does nothing.
    
using StreamWriter f = new StreamWriter(pathFromConfig);
f.Write(privateKey); 

现在,我需要在 Linux 服务器上运行此应用程序。 So, I add docker support to the application from VS for Linux, create a docker image and run the docker container with this image. 为此,我将 appsettings.json 更改为appsettings.json将没有C:\\

{
  "root_privatekeylocation": "~/CARepository/Root/rootprivatekey.pem",
  "root_publickeylocation": "~/CARepository/Root/rootpublickey.pem",
  "crl_location": "~/CARepository/CRL/Crl.crl",
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

调用应用程序 API 在给定路径上创建文件,它返回 output 但没有创建文件~/CARepository/Root/rootprivatekey.pem我也无法在任何地方找到CARepository 似乎它没有创建这条路径。 我签入了 docker 容器 CLI。 有谁能够帮我? Linux docker 是否还有其他文件路径格式,或者我需要更改 C# 代码吗?

不要使用 ~ 来指定用户的主文件夹,使用Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); 或选择其他 SpecialFolder 枚举之一。

https://docs.microsoft.com/en-us/dotnet/api/system.environment.getfolderpath?view=net-5.0

如何访问列表<object>来自 appsettings.Json?<div id="text_translate"><p> 在我的 appsettings.json 我有一个这样的字段</p><pre> "MyFields": [ { "name":"one", "type":"type1" "parameters":[{"key":"url","value":"myurl.com"}, {"key":"data","value":"mydata"}] }, { "name":"two", "type":"type2"... .. and so on } ]</pre><p> 我制作了一个具有以下属性的 class Myfield:</p><pre> public class MyField { [JsonProperty] public string? name { get; set; } [JsonProperty] public string? type { get; set; } [JsonProperty] public IDictionary<string,string>? parameters { get; set; } }</pre><p> 我正在尝试使用配置在另一个 class 中访问它,如下所示:</p><pre> //config is the configuration var myFields = config.GetSection("MyFields").Get<List<MyField>>();</pre><p> 问题是 myFields 结果是空的。 但是当我通过消除“参数”字段来做同样的事情时,它就像一个魅力。</p><p> 我知道这与匹配不当有关,但能得到一些帮助会很棒。</p></div></object>

[英]How can I access a List<object> from appsettings.Json?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从类库项目访问appsettings.json文件设置 由于 appsettings.json 的路径,add-migration 无法从文件 appsettings.json 读取连接字符串 从 appsettings.json 配置文件中读取 在 docker run 上找不到 appsettings.json 文件的问题 如何从 Program.cs 文件中的 appsettings.json 文件访问数据库连接字符串 从同一解决方案中的另一个项目获取 appsettings.json 路径 从.NET 4.5.2项目访问appsettings.json 如何访问列表<object>来自 appsettings.Json?<div id="text_translate"><p> 在我的 appsettings.json 我有一个这样的字段</p><pre> "MyFields": [ { "name":"one", "type":"type1" "parameters":[{"key":"url","value":"myurl.com"}, {"key":"data","value":"mydata"}] }, { "name":"two", "type":"type2"... .. and so on } ]</pre><p> 我制作了一个具有以下属性的 class Myfield:</p><pre> public class MyField { [JsonProperty] public string? name { get; set; } [JsonProperty] public string? type { get; set; } [JsonProperty] public IDictionary<string,string>? parameters { get; set; } }</pre><p> 我正在尝试使用配置在另一个 class 中访问它,如下所示:</p><pre> //config is the configuration var myFields = config.GetSection("MyFields").Get<List<MyField>>();</pre><p> 问题是 myFields 结果是空的。 但是当我通过消除“参数”字段来做同样的事情时,它就像一个魅力。</p><p> 我知道这与匹配不当有关,但能得到一些帮助会很棒。</p></div></object> '未找到配置文件'appsettings.json',不是可选的。 物理路径是“C:\Windows\SysWOW64\appsettings.json”。 Docker 中 .NET Core 应用程序的 appSettings.json?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM