【问题标题】:Do I need an Azure Storage Account to run a WebJob?我是否需要 Azure 存储帐户才能运行 WebJob?
【发布时间】:2017-07-12 15:06:59
【问题描述】:

所以我对使用 Azure 还很陌生,有些事情我无法完全理解。其中之一是 Azure 存储帐户。

我的网络作业不断停止并出现以下错误“未处理的异常:System.InvalidOperationException:'[account_name]' 的帐户凭据不正确。”然而,理解错误并不是问题,至少我是这么认为的。问题在于理解为什么我需要一个 Azure 存储帐户来克服它。

请继续阅读,因为我试图带您完成迄今为止所采取的步骤。希望真正的问题对你来说会变得更清楚。

到目前为止,在我努力在 Azure 上部署 WebJob 的过程中,我们创建了以下资源:

  • 应用服务计划
  • 应用服务
  • SQL 服务器
  • SQL 数据库

我正在使用以下代码 sn-p 来防止我的网络作业退出:

JobHostConfiguration config = new JobHostConfiguration();
config.DashboardConnectionString = null;
new JobHost(config).RunAndBlock();

据我从其他来源了解,仪表板连接字符串是可选的,但 AzureWebJobsStorage 连接字符串是必需的。

我尝试使用 here 找到的配置在门户中设置所需的连接字符串。

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

进一步看,我发现 this answer 清楚地说明了我将从哪里获得所需的值,即一个/我缺少的 Azure 存储帐户。

那么现在来回答一个实际的问题:当我看似拥有运行 WebJob 所需的所有资源时,为什么还需要一个 Azure 存储帐户?它有什么作用?这是计费问题吗,因为我认为我们在应用服务计划中定义了这一点。我已尝试通过 here 阅读 Azure 存储帐户,但我需要更多帮助来了解它与所有事物的关系。

【问题讨论】:

    标签: azure azure-webjobs


    【解决方案1】:

    来自文档:

    Azure 存储帐户提供用于在云中存储队列和 Blob 数据的资源。

    WebJobs SDK 也使用它来存储仪表板的日志记录数据。

    Refer to the getting started guide and documentation for further information

    【讨论】:

    • 您链接的文档仍然提到创建 Azure 存储帐户。如果我确实不必创建一个,那它并不能帮助我理解如何实现这一目标。
    • 你不需要,不。监视您的日志文件是一种好习惯,是的。所以这不是强制性的,但建议这样做。
    • 这里我没有使用任何仪表板日志记录或任​​何连接到 Azure 存储的日志记录。当我使用这个 webjobs sdk 的 v1.x 时,即使存储字符串也是强制性的,没有任何内容写入天蓝色存储。但是当我使用这个 sdk 的 v.2.x 时,它会创建一个名为 azure-webjobs-hosts 的 blob 容器并写入一些数据。为什么 azure 在这个 blob 中有这个信息?
    • 似乎 webjobs 正在依赖存储。我知道持久功能现在依赖于存储来维持状态。我还没有机会查看 2.x 存储在 blob 中的函数。
    【解决方案2】:

    您的问题的答案是“否”,当您尝试设置和运行 Azure Web 作业时,不必使用 Azure 存储。

    如果您使用的是JobHostJobHostConfiguration,那么存储帐户确实存在依赖关系。

    示例代码 sn-p 如下所示。

    class Program
    {
        static void Main()
        {
            Functions.ExecuteTask();
        }
    
    }
    
    public class Functions
    {
        [NoAutomaticTrigger]
        public static void ExecuteTask()
        {
            // Execute your task here 
        }
    }
    

    【讨论】:

      【解决方案3】:

      答案是否定的,你没有。您可以在不绑定到 Azure 存储帐户的情况下运行 WebJob。就像 Murray 提到的那样,您的 WebJob 仪表板确实使用存储帐户来记录数据,但这是完全独立的。

      【讨论】:

      • 我假设我必须从我的代码中删除我发布的代码 sn-p 才能让它不记录数据。我的下一个问题是如何防止我的程序退出,因为这就是我正在使用的 JobHost(config).RunAndBlock();为了?
      • 您也不需要 JobHost。 WebJob 可以是一个简单的控制台应用程序。 JobHost 是您不需要使用的 WebJobs SDK 的一部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 2020-01-31
      • 2019-02-01
      • 1970-01-01
      相关资源
      最近更新 更多