【问题标题】:WebJobs dashboard broken for 2.0.0 beta C# SDK2.0.0 beta C# SDK 的 WebJobs 仪表板损坏
【发布时间】:2017-01-06 20:06:21
【问题描述】:

我遇到了类似于this question 的问题,因为函数列表显示重复项和感叹号。与该问题不同的是,“关于”页面显示了一长串索引器故障,所有故障都带有消息“远程服务器返回错误:(403) 已禁止”。带有显示错误源自 Azure 存储客户端的堆栈跟踪。

问题是,网络作业本身可以很好地连接到存储帐户。另外,如果我将 AzureWebJobsDashboard 设置中的连接字符串复制到 Azure 存储资源管理器中,它会很好地连接到帐户。

我突然想到,这可能与我使用的是 SDK 的 beta 版本有关,并且它可能与 Azure 正在运行的仪表板版本不兼容,我无法控制。

很遗憾,我无法降级到稳定版本,因为我们使用的是基于 beta SDK 的NotificationHubs extension

有没有人遇到过同样的问题并提出了不涉及放弃通知中心支持的解决方案?

更新

我突然想到,除了升级 WebJobs SDK 版本外,我还从解决方案中的一个 WebJob 项目变成了 2 个 WebJobs。问题可能与此有关吗?我已将这两个作业放在 WebApi 项目属性下的 webjobs-list.json 文件中:

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
        "filePath": "../import/TeamString.Service.Import.csproj"
    },
    {
        "filePath": "../push-notifier/TeamString.Service.PushNotifier.csproj"
    }
  ]
}

更新 2

首先,如前所述,我在同一个应用服务 webapp 中部署了 2 个连续的 WebJobs:

  1. Importer - 这个只依赖于基本的Microsoft.Azure.WebJobs NuGet 包。没有扩展,也没有服务总线。
  2. Push-Notifier - 这个通过 WebJobs 使用 ServiceBus 和 Notification Hubs,所以它依赖于 Microsoft.Azure.WebJobs.ServiceBusMicrosoft.Azure.WebJobs.Extensions.NotificationHubs

我现在有时间进行一些额外的实验:

  1. 将 WebJob NuGet 包更新到最新的测试版。这并没有修复常量索引器错误。现在在以下版本上运行:
    • WindowsAzure.Storage:7.2.1
    • Microsoft.Web.WebJobs.Publish:1.0.12
    • Microsoft.Azure.WebJobs.Core:2.0.0-beta2-10491
    • Microsoft.Azure.WebJobs:2.0.0-beta2-10491
    • Microsoft.Azure.WebJobs.ServiceBus:2.0.0-beta2-10491
    • Microsoft.Azure.WebJobs.Extensions:2.0.0-beta2
    • Microsoft.Azure.WebJobs.Script.Extensibility:1.0.0-beta2-10690
    • Microsoft.Azure.WebJobs.Extensions.NotificationHubs:1.0.0-beta2
  2. 通过 Azure 门户删除导入程序 WebJob 并停止推送通知程序。然后删除存储帐户中的所有 WebJob 日志对象。结果:索引器开始发送垃圾邮件 404 Not Found 错误而不是 403 Forbidden。
  3. 再次启动推送通知器并为其完成一些工作。结果:索引器返回垃圾邮件 403 Forbidden。
  4. 重新部署的解决方案让进口商回来。然后通过门户删除推送通知程序 WebJob 并停止导入程序。再次删除了所有 WebJob 日志对象。结果:没有索引器错误!?!
  5. 启动导入器并为其完成一些工作。结果:仍然没有索引器错误!

因此,触发此错误的肯定是推送通知程序 WebJob。

【问题讨论】:

    标签: c# azure-webjobssdk


    【解决方案1】:

    我突然想到,这可能与我使用的是 SDK 的 beta 版本有关,并且它可能与 Azure 正在运行的仪表板版本不兼容

    我使用 WebJobs 模板创建一个新的 Web 作业项目并安装 Microsoft.Azure.WebJobs.Extensions v2.0.0-beta2,我发现如果我提供具有正确值的 AzureWebJobsDashboard 和 AzureWebJobsStorage 连接字符串,则 Web 作业可以运行很好。

    packages.config

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net45" />
      <package id="Microsoft.Azure.WebJobs" version="2.0.0-beta2" targetFramework="net45" />
      <package id="Microsoft.Azure.WebJobs.Core" version="2.0.0-beta2" targetFramework="net45" />
      <package id="Microsoft.Azure.WebJobs.Extensions" version="2.0.0-beta2" targetFramework="net45" />
      <package id="Microsoft.Azure.WebJobs.Script.Extensibility" version="1.0.0-beta2" targetFramework="net45" />
      <package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net45" />
      <package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net45" />
      <package id="Microsoft.Data.Services.Client" version="5.6.4" targetFramework="net45" />
      <package id="Microsoft.Tpl.Dataflow" version="4.5.24" targetFramework="net45" />
      <package id="Microsoft.Web.WebJobs.Publish" version="1.0.12" targetFramework="net45" />
      <package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
      <package id="ncrontab" version="3.2.0" targetFramework="net45" />
      <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
      <package id="System.Spatial" version="5.6.4" targetFramework="net45" />
      <package id="WindowsAzure.Storage" version="7.2.1" targetFramework="net45" />
    </packages>
    

    请确保您使用以下格式值 DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY 设置名为 AzureWebJobsDashboard 的连接字符串。请检查您是否在 Azure 门户中的 Application settings blade 下为 AzureWebJobsDashboard 指定了另一个值(它可能会覆盖现有设置)。

    另外,请尝试创建一个新的 Web 作业项目并安装 Microsoft.Azure.WebJobs.Extensions v2.0.0-beta2,而不使用 NotificationHubs 扩展,以检查 NotificationHubs 扩展是否导致问题。

    【讨论】:

    • 我检查了 AzureWebJobsDashboard 中的连接字符串,方法是将其复制到 Azure 存储资源管理器并检查是否可以连接。只需手动检查它,它就会遵循您的格式。我对 AzureWebJobsStorage 使用相同的连接字符串。两者都仅在门户中设置,因此不会混淆覆盖。
    • 将尝试创建一个没有 NotificationHubs 的新项目,看看是否能解决问题。
    • SDK 的测试版旨在与仪表板兼容 - 我们在发布之前测试了所有这些,它应该可以工作。 NH 扩展不会引起任何问题。如果您仍然有问题,请在我们的 repo here 中记录问题。
    • @Søren Boisen 你解决问题了吗?
    • 不,但我已经缩小了问题的范围。将更新问题。我现在可能有足够的信息来在 repo 中记录问题。
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2017-09-30
    相关资源
    最近更新 更多