System.InvalidOperationException:'请验证Azure存储模拟器正在运行。

时间:2018-08-23 15:11:36

标签: asp.net-core .net-core azure-webjobs

我正在使用以下设置在localhost上运行.Net Core 2.1.2 WebJob:

    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",

这是Program.cs:

  public static class Program
{
    public static IConfigurationRoot Configuration { get; set; }

    private static ConnectionStringsSettings _connectionStringsSettings;
    private static ConnectionStringsSettings ConnectionStringsSettings
    {
        get
        {
            return _connectionStringsSettings ?? (_connectionStringsSettings = Configuration
                .GetSection("ConnectionStrings")
                .Get<ConnectionStringsSettings>()
            );
        }
    }


    public static async Task Main(string[] args)
    {
        var host = new HostBuilder()
            .ConfigureAppConfiguration((_, configuration) =>
            {
                configuration.AddJsonFile("appsettings.json", optional: true);
                configuration.AddJsonFile("appsettings.Development.json", optional: true);
                configuration.AddEnvironmentVariables();

                if (args != null)
                {
                    configuration.AddCommandLine(args);
                }

                Configuration = configuration.Build();
            })
            .ConfigureServices((hostContext, services) =>
            {
                services.AddOptions();
                services.Configure<ConnectionStringsSettings>(hostContext.Configuration.GetSection("ConnectionStrings"));
                services.Configure<AzureStorageSettings>(hostContext.Configuration.GetSection("AzureStorage"));
                services.AddApplicationInsightsTelemetry(hostContext.Configuration);
            })
            .ConfigureLogging((hostingContext, logging) =>
            {
                logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                logging.AddConsole();
            })
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
            .ConfigureContainer<ContainerBuilder>(builder =>
            {
                builder.RegisterType<QueueFunctions>().InstancePerDependency();
                builder.RegisterType<VideosCompressorQueueService>().As<IVideosQueueService>();
            })
            .Build()
            .EnsureQueueExists();

        var jobHostConfiguration = new JobHostConfiguration
        {
            JobActivator = new JobActivator(host),
            DashboardConnectionString = ConnectionStringsSettings.AzureWebJobsDashboard,
            StorageConnectionString = ConnectionStringsSettings.AzureWebJobsStorage
        };

        var webjob = new JobHost(jobHostConfiguration);
        webjob.RunAndBlock();
    }

    public static IHost EnsureQueueExists(this IHost host)
    {
        var videosQueueService = host.Services.GetRequiredService<IVideosQueueService>();
        videosQueueService.EnsureQueueExistsAsync().Wait();
        return host;
    }
}

JobActivator.cs:     公共类JobActivator:IJobActivator     {         私有只读IHost _host;

    public JobActivator(IHost host)
    {
        _host = host;
    }

    public T CreateInstance<T>()
    {
        return _host.Services.GetService<T>();
    }
}

和QueueFunctions.cs:     公共类QueueFunctions     {         私有只读IOptions _azureStorageSettings;         私有只读ILogger _logger;

    public QueueFunctions(
        IOptions<AzureStorageSettings> azureStorageSettings,
        ILogger<QueueFunctions> logger
    )
    {
        _azureStorageSettings = azureStorageSettings;
        _logger = logger;
    }

    public async Task ProcessAsync([QueueTrigger(Constants.Queues.Videos)] string text)
    {
        Console.WriteLine(text);
    }
}

运行时出现此错误: image

.Net Core 2中添加的新Host Builder是否存在问题?而且很可能我错过了代码中的某些内容?

1 个答案:

答案 0 :(得分:0)

对于那些有相同问题的人,问题来自Microsoft Azure WebJob nuget软件包的版本。我需要更新为:

<PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.0-beta5" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.0-beta5" />

现在一切正常,正常工作。