如何解决无法在Azure WebJob中获取单例锁定问题?

时间:2016-07-20 08:21:06

标签: c# azure azure-webjobs

当我在本地运行应用程序时,我无法获取单例锁定问题。我该如何解决?

以下是我的代码

static void Main()
    {
        JobHostConfiguration config = new`enter code here` JobHostConfiguration();
        config.UseTimers();
        AutoMapperManager.SetAutomapper();
        JobHost host = new JobHost(config);

        //Task.Factory.StartNew(() => host.Call(typeof(Functions).GetMethod("GetActionItemPullData")));
        config.Tracing.ConsoleLevel = TraceLevel.Verbose;
        host.RunAndBlock();
    }

此致 有利

3 个答案:

答案 0 :(得分:3)

我碰巧将Web作业迁移到新的应用服务中,我遇到了同样的错误。在查看了所有内容后,我发现它是什么:

确保Azure中没有运行Web作业的实例。这意味着,停止Azure中的Web作业。如果您定位到同一个存储帐户,即使是本地副本也不会运行。

停止应用服务并不会停止网络作业。您需要明确停止Web作业。

添加详细的日志记录级别对我帮助很大。

config.Tracing.ConsoleLevel = System.Diagnostics.TraceLevel.Verbose;

答案 1 :(得分:2)

如果您已经将您的webjob发布到Azure,请确保在尝试在本地运行时不会在那里运行。

答案 2 :(得分:1)

您可以将主机 ID 覆盖为默认值以外的其他内容。 此代码片段适用于 WebJobs SDK 的 v3,但 v2 也有类似的设置。如果多人在本地从事同一个项目,此解决方案甚至有效。

builder.ConfigureWebJobs(context =>
{
  if (IsLocal)
  {
    context.UseHostId(Environment.UserName);
  }

  // other context operations
}