我有一个.NET Core应用程序,已将其部署为Web作业,该Web作业已成功部署,但未执行任何任务..我认为它无法从config.json获取连接字符串。
.Net Core控制台应用程序默认情况下未提供配置文件,因此我手动添加了一个配置文件,并使用以下代码读取其配置:
var builder = new ConfigurationBuilder();
string directory = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
var builder2 = builder.SetBasePath(directory);
var builder3 = builder2.AddJsonFile("config.json", true, true);
_configuration = builder3.Build();
var optionsBuilder = new DbContextOptionsBuilder<UserContext>();
optionsBuilder.UseSqlServer(_configuration.GetConnectionString("ROSCAConnection"));
UserContext userContext = new UserContext(optionsBuilder.Options);
这在我的机器上工作正常。当我发布.NET Core应用程序时,它没有将config.json文件拾取到我的发布输出中。
这是我的config.json文件:
{
"ConnectionStrings": {
"ROSCAConnection": "Data Source=***.database.windows.net;Initial Catalog=***;Persist Security Info=True;User ID=***;Password=***"
},
"Ripple": {
"baseURL": "https://s.altnet.rippletest.net:51234",
"account": "***",
"secret": "***"
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}
如何发布此.NET Core控制台应用程序,以使其读取我的config.json?
在天蓝色中检查应用程序服务编辑器确认config.json确实存在
答案 0 :(得分:1)
我已经测试了它的工作原理,您可以参考以下步骤:
1。appsettings.json
文件的Copy to Output Directory
属性也应设置为Copy if newer
,以便应用程序在发布时可以访问它。
2。设置被注入到主要方法中,而不是像Web应用程序那样注入到启动方法中,但是代码本质上是相同的。我使用您提供的appsetting.json
。
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
Console.WriteLine("hello");
Console.WriteLine(configuration.GetConnectionString("ROSCAConnection"));
}
3。要解决SetBasePath
,请向Microsoft.Extensions.Configuration.FileExtensions包中添加一个依赖项。
要解决AddJsonFile
,请向Microsoft.Extensions.Configuration.Json程序包中添加依赖项。