首页 > 解决方案 > System.InvalidOperationException:“请验证 Azure 存储模拟器是否正在运行。”

问题描述

我正在使用以下设置在 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 { private readonly IHost _host;

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

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

和 QueueFunctions.cs: public class QueueFunctions { private readonly 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);
    }
}

当我运行它时,我有这个错误: 图片

.Net Core 2 中新增的 Host Builder 有问题吗?很可能我错过了我的代码中的某些内容?

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

解决方案


对于那些有同样问题的人,问题来自 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" />

现在一切正常。


推荐阅读