【问题标题】:How do I test the Azure Webjobs SDK projects locally?如何在本地测试 Azure Webjobs SDK 项目?
【发布时间】:2016-03-21 15:39:53
【问题描述】:

我希望能够在将 Azure WebJobs SDK 项目实际发布到 Azure 之前在本地对其进行测试。

如果我创建一个全新的 Azure Web Jobs 项目,我会得到一些如下所示的代码:

程序.cs:

// To learn more about Microsoft Azure WebJobs SDK, please see http://go.microsoft.com/fwlink/?LinkID=320976
class Program
{
    // Please set the following connection strings in app.config for this WebJob to run:
    // AzureWebJobsDashboard and AzureWebJobsStorage
    static void Main()
    {
        var host = new JobHost();
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }
}

函数.cs:

public class Functions
{
    // This function will get triggered/executed when a new message is written 
    // on an Azure Queue called queue.
    public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log)
    {
        log.WriteLine(message);
    }
}

我想测试一下QueueTrigger 函数是否正常工作,但我什至无法做到这一点,因为在host.RunAndBlock(); 上出现以下异常:

“System.InvalidOperationException”类型的未处理异常 发生在 mscorlib.dll 中

其他信息:Microsoft Azure WebJobs SDK 仪表板 连接字符串丢失或为空。微软 Azure 存储 帐号连接字符串可以通过以下方式设置:

  1. 在 .config 文件的 connectionStrings 部分中设置名为“AzureWebJobsDashboard”的连接字符串,格式如下 , 或

  2. 设置名为“AzureWebJobsDashboard”的环境变量,或者

  3. 设置JobHostConfiguration的对应属性。

我运行了存储模拟器,并像这样设置 Azure AzureWebJobsDashboard 连接字符串:

<add name="AzureWebJobsDashboard" connectionString="UseDevelopmentStorage=true" />

但是,当我这样做时,我得到了一个不同的错误

“System.InvalidOperationException”类型的未处理异常 发生在 mscorlib.dll 中

附加信息:无法验证 Microsoft Azure WebJobs SDK 仪表板帐户。 Microsoft Azure 存储模拟器不是 支持,请使用托管在 微软 Azure。


有什么方法可以在本地测试我对 WebJobs SDK 的使用吗?

【问题讨论】:

    标签: azure-webjobs azure-webjobssdk


    【解决方案1】:

    WebJobs 2.0 现在可以使用开发存储(我使用的是 v2.0.0-beta2)。

    请注意,总体上的延迟,尤其是 Blob 触发器,目前远比您在生产中获得的要好得多。精心设计。

    【讨论】:

      【解决方案2】:

      如果要在本地测试 WebJobs SDK,需要在 Azure 中设置存储帐户。您无法针对 Azure 模拟器对其进行测试。这就是那个错误告诉你的。

      无法验证 Microsoft Azure WebJobs SDK 仪表板帐户。不支持 Microsoft Azure 存储模拟器,请使用托管在 Microsoft Azure 中的 Microsoft Azure 存储帐户。

      所以要回答您的问题,您可以使用门户在 Azure 中创建一个存储帐户,然后在控制台应用程序的 app.config 中设置您的连接字符串。然后只需将消息放入队列并在本地运行控制台应用程序,它就会将其拾取(假设您显然正在尝试与队列交互)。

      确保将[QueueTrigger("queue")]“队列”替换为您要轮询的队列的名称。

      希望对你有帮助

      【讨论】:

      • 所以没有办法离线测试?
      • 不行,你需要测试一个真实的存储帐户,不能使用模拟器。不过设置起来真的很容易。
      • 我们有一个本地模拟器支持的跟踪项目,但目前不支持。在此处查看跟踪项目:github.com/Azure/azure-webjobs-sdk/issues/53。请注意,不需要 AzureWebJobsDashboard 连接字符串(仅当您想在仪表板中查看日志时)。需要 AzureWebJobsStorage 连接字符串。
      • 你现在可以在本地测试了。该 github 问题已关闭,从 Emulator 4.3(4.4 是最新版本)开始,它改进了对队列的支持。
      • 不...除非您不遗余力地安装某种随机的 nuget / 未知包...基本上这不是“按照设计”开箱即用的跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多