将.NET Core控制台应用程序部署为Web作业而不从config.json中获取连接字符串

时间:2018-08-12 12:42:29

标签: c# .net-core console-application config azure-webjobs

我有一个.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确实存在

enter image description here

1 个答案:

答案 0 :(得分:1)

我已经测试了它的工作原理,您可以参考以下步骤:

1。appsettings.json文件的Copy to Output Directory属性也应设置为Copy if newer,以便应用程序在发布时可以访问它enter image description here

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程序包中添加依赖项。

4。webjobs输出。 enter image description here