Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure webjobs JobHostConfiguration丢失,无法确定是否立即执行设置_C#_.net_Azure_Azure Webjobssdk - Fatal编程技术网

C# Azure webjobs JobHostConfiguration丢失,无法确定是否立即执行设置

C# Azure webjobs JobHostConfiguration丢失,无法确定是否立即执行设置,c#,.net,azure,azure-webjobssdk,C#,.net,Azure,Azure Webjobssdk,我想将当前的webjobs配置重写为3.0版,但无法将其与文档一起使用,因为我不知道如何在没有配置文件的情况下设置Dashboard ConnectionString或storageconnectionstring JobHostConfiguration配置=新的JobHostConfiguration { namesolver=新的WebJobsNameResolver }; string defaultStorageConnectionString=string。动态格式化一些生成字符串;

我想将当前的webjobs配置重写为3.0版,但无法将其与文档一起使用,因为我不知道如何在没有配置文件的情况下设置Dashboard ConnectionString或storageconnectionstring

JobHostConfiguration配置=新的JobHostConfiguration { namesolver=新的WebJobsNameResolver }; string defaultStorageConnectionString=string。动态格式化一些生成字符串; config.DashboardConnectionString=defaultStorageConnectionString; config.StorageConnectionString=defaultStorageConnectionString; usingJobHost主机=新建JobHostconfig { //以下代码确保WebJob将持续运行 host.RunAndBlock; }
我想让它使用正确的存储和仪表板连接字符串连续运行,而不使用配置文件。

3.0.0 NuGet软件包更新非测试版带来了突破性的更改。它基于与asp.net主机类似的通用主机。您可以参考以下步骤:

1.在program.cs中添加这行代码

.ConfigureAppConfiguration((context, config) => {
    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    class Program
    {
        static void Main()
        {

            var builder = new HostBuilder()
                .UseEnvironment("Development")
                .ConfigureAppConfiguration((context, config) => {
                    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                })
                .ConfigureWebJobs(
                b =>
                {
                    b.AddAzureStorageCoreServices()
                    .AddAzureStorage()
                    .AddTimers()
                    .AddFiles();
                    //.AddDashboardLogging();
                })
                .ConfigureLogging((context, b) =>
                {
                    b.SetMinimumLevel(LogLevel.Debug);
                    b.AddConsole();
                })
                .UseConsoleLifetime();


            var host = builder.Build();

            using (host)
            {
                host.Run();
            }
        }
    }
}
整个代码在Program.cs中

.ConfigureAppConfiguration((context, config) => {
    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    class Program
    {
        static void Main()
        {

            var builder = new HostBuilder()
                .UseEnvironment("Development")
                .ConfigureAppConfiguration((context, config) => {
                    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                })
                .ConfigureWebJobs(
                b =>
                {
                    b.AddAzureStorageCoreServices()
                    .AddAzureStorage()
                    .AddTimers()
                    .AddFiles();
                    //.AddDashboardLogging();
                })
                .ConfigureLogging((context, b) =>
                {
                    b.SetMinimumLevel(LogLevel.Debug);
                    b.AddConsole();
                })
                .UseConsoleLifetime();


            var host = builder.Build();

            using (host)
            {
                host.Run();
            }
        }
    }
}
2.设置appsettings.json注意,将其属性Copy设置为Output Directory或Copy always:

3.3.c.功能:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    public class Functions
    {        
        public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger log)
        {
            //log.WriteLine(message);
            log.LogInformation(message);
        }
    }
}
4.产出:

有关更多详细信息,请参阅此

更新:

正如乔伊所说,我们可以用

config.AddInMemoryCollection(settings);


这样它就不会使用配置文件。这是一篇关于如何使用3.0.0 NuGet软件包更新非测试版带来的突破性变化的文章。它基于与asp.net主机类似的通用主机。您可以参考以下步骤:

1.在program.cs中添加这行代码

.ConfigureAppConfiguration((context, config) => {
    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    class Program
    {
        static void Main()
        {

            var builder = new HostBuilder()
                .UseEnvironment("Development")
                .ConfigureAppConfiguration((context, config) => {
                    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                })
                .ConfigureWebJobs(
                b =>
                {
                    b.AddAzureStorageCoreServices()
                    .AddAzureStorage()
                    .AddTimers()
                    .AddFiles();
                    //.AddDashboardLogging();
                })
                .ConfigureLogging((context, b) =>
                {
                    b.SetMinimumLevel(LogLevel.Debug);
                    b.AddConsole();
                })
                .UseConsoleLifetime();


            var host = builder.Build();

            using (host)
            {
                host.Run();
            }
        }
    }
}
整个代码在Program.cs中

.ConfigureAppConfiguration((context, config) => {
    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    class Program
    {
        static void Main()
        {

            var builder = new HostBuilder()
                .UseEnvironment("Development")
                .ConfigureAppConfiguration((context, config) => {
                    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                })
                .ConfigureWebJobs(
                b =>
                {
                    b.AddAzureStorageCoreServices()
                    .AddAzureStorage()
                    .AddTimers()
                    .AddFiles();
                    //.AddDashboardLogging();
                })
                .ConfigureLogging((context, b) =>
                {
                    b.SetMinimumLevel(LogLevel.Debug);
                    b.AddConsole();
                })
                .UseConsoleLifetime();


            var host = builder.Build();

            using (host)
            {
                host.Run();
            }
        }
    }
}
2.设置appsettings.json注意,将其属性Copy设置为Output Directory或Copy always:

3.3.c.功能:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace WebJob1template
{
    public class Functions
    {        
        public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger log)
        {
            //log.WriteLine(message);
            log.LogInformation(message);
        }
    }
}
4.产出:

有关更多详细信息,请参阅此

更新:

正如乔伊所说,我们可以用

config.AddInMemoryCollection(settings);


这样它就不会使用配置文件。这是一篇关于如何使用的文章,扩展了Joey Cai的答案,有可能不使用JSON配置文件:

我们有:

var storageAcc = "<< your connection string >>"
var jobHostConfig = new JobHostConfiguration(storageAcc);
var host = new JobHost(jobHostConfig);
host.RunAndBlock();
而不是

"ConnectionStrings:AzureWebJobsStorage:0"

停止抱怨。通过这种方式,我们可以使用与以前相同的配置管理。

扩展Joey Cai的答案,可以不使用JSON配置文件:

我们有:

var storageAcc = "<< your connection string >>"
var jobHostConfig = new JobHostConfiguration(storageAcc);
var host = new JobHost(jobHostConfig);
host.RunAndBlock();
而不是

"ConnectionStrings:AzureWebJobsStorage:0"

停止抱怨。通过这种方式,我们可以使用与以前相同的配置管理。

出于不同的原因,我不想使用appsettings.json,但我找到了一个解决方案。我没有使用AddJsonFile,而是使用了AddInMemoryCollection设置,设置只是一个带有这些设置的字典。出于不同的原因,我不想使用appsettings.json,但我找到了一个解决方案。通过使用AddJsonFile,我使用了AddInMemoryCollection设置,设置只是一个带有设置的字典。