标签: azure-webjobssdk

连续的WebJob会自动停止

我有一个与网站相关联的Webjob,它被配置为连续运行,它所做的只是查看消息队列并处理它.

我的网站处于共享模式,目前几乎没有任何流量,所以我设置了虚拟服务,每隔1分钟请求主页,以防止网站被关闭作为此测试的一部分,并且接缝工作正如预期的那样,我可以注意到网站本身没有关闭.但是,除非我转到Azure管理门户并查找webjob状态,否则此webjob将在大约一小时内保持关闭状态.那一刻我去那里再次启动然后在几分钟到一个小时内关闭.

此webjob的日志文件显示如下:

[02/13/2015 09:19:45 > 4660f6: INFO] Job host started
[02/13/2015 10:19:41 > 4660f6: SYS INFO] WebJob is still running
[02/13/2015 10:20:35 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopping
[02/13/2015 10:20:35 > 4660f6: INFO] Job host stopped
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Success
[02/13/2015 10:20:35 > 4660f6: SYS INFO] Status changed to Stopped
Run Code Online (Sandbox Code Playgroud)

我可以看到我的网站仍在运行并返回主页,但作业本身已停止.

现在,当我登录管理门户查找状态时,我可以在日志中看到:

[02/13/2015 10:20:35 > 4660f6: SYS …
Run Code Online (Sandbox Code Playgroud)

azure azure-webjobs azure-webjobssdk

13
推荐指数
2
解决办法
7814
查看次数

与azure webjobs如何传递计划任务的参数

我正在创建一个dot net控制台应用程序,它将作为Azure webjob运行.它计划每小时运行一次.

我想知道如何在调用时将参数传递给作业?

azure azure-webjobs azure-webjobssdk

11
推荐指数
1
解决办法
9745
查看次数

用于会话的Azure WebJob ServiceBusTrigger

我知道可以从服务总线队列接收消息,如:

public static void ProcessQueueMessage([ServiceBusTrigger("inputqueue")] string message, TextWriter logger)
Run Code Online (Sandbox Code Playgroud)

但是还有一种通过触发属性接收会话的方法吗?像ServiceBusSessionTrigger这样的东西?

通常人们会接受这样的会话:

var session = queueClient.AcceptMessageSession();
Run Code Online (Sandbox Code Playgroud)

但我更喜欢WebJob SDK来处理一次可以处理多个会话的方式.

编辑: 似乎目前不支持此功能:请参阅github了解功能请求

c# azureservicebus azure-servicebus-queues azure-webjobs azure-webjobssdk

11
推荐指数
1
解决办法
1498
查看次数

警告:仅从程序集中获取部分类型:Microsoft.Azure.WebJobs.Extensions.Storage

我有一个简单的 .NET V3 WebJob,在 .NET 网站中启动并运行了一个计时器触发器,如本答案所述:Scheduled .NET WebJob V3 example

但是,在输出中,我收到此警告:

warn: Host.Startup[0] Warning: Only got partial types from assembly: Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 The following loader failures occured when trying to load the assembly: - Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. - Method 'Commit' in type 'Microsoft.Azure.WebJobs.Host.Blobs.Bindings.DelegatingCloudBlobStream' from assembly 'Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation. - Method 'Commit' in …

c# asp.net azure azure-webjobs azure-webjobssdk

11
推荐指数
1
解决办法
558
查看次数

如何将异步函数写入服务总线队列?

使用Azure WebJobs SDK,我想创建一个异步函数,它将接收ServiceBus队列输入并写入ServiceBus队列输出.异步方法不能有参数,对于BlobStorage上的示例,似乎可以通过使用Streams和TextWrite来解决这些参数.但是,当我尝试使用ServiceBus参数执行相同操作时,我收到异常.

public static async void Transform(
    [ServiceBusTrigger("%InputQueue%")] String input,
    [ServiceBus("%OutputQueue%")] TextWriter output,
    TextWriter log)
Run Code Online (Sandbox Code Playgroud)

错误索引方法'FilterCurrentCpesToNewCpes'

无法绑定ServiceBus以键入"System.IO.TextWriter".

我收到Stream的类似消息.

c# azure azure-webjobs azure-webjobssdk

10
推荐指数
1
解决办法
1877
查看次数

Azure Webjobs:一个具有多个功能的作业,或者几个具有1个功能的作业?

如何在创建多个具有1个功能的WebJobs并将多个功能捆绑到一个或仅仅几个WebJobs之间做出决定?谢谢

azure azure-webjobs azure-webjobssdk

10
推荐指数
1
解决办法
1754
查看次数

如何在没有"始终开启"的情况下保持Azure WebJob的运行

我有一个与网站相关联的连续webjob,我在共享模式下运行该网站.我不想转到Always On选项,因为我的应用程序并不需要.我只想在给我的网站打电话时处理这条消息.

我的问题是,几分钟后工作仍然停止,即使我每隔5分钟在我的网站上不断调用一个虚拟保持方法,该方法将消息发布到由该webjob监视的队列中.

我的webjob是一个使用WebJob SDK构建的简单控制台应用程序,它具有这样的代码

JobHost host = new JobHost(new JobHostConfiguration(storageConnictionSttring));
host.RunAndBlock();
Run Code Online (Sandbox Code Playgroud)

消息处理函数如下所示:

public static void ProcessKeepAliveMessages([QueueTrigger("keepalive")] KeepAliveTrigger message)
{
    Console.WriteLine("Keep Alive message called on :{0}", message.MessageTime);
}
Run Code Online (Sandbox Code Playgroud)

该作业的消息日志基本上说

[03/05/2015 18:51:02 > 4660f6: SYS INFO] WebJob is stopping due to website shutting down
Run Code Online (Sandbox Code Playgroud)

我不介意这种情况是否会发生,但是当网站开始下一次保持活动时,webjob就不会启动.所有消息都排队,直到我进入管理仪表板或SCM门户,如下所示

https://mysite.scm.azurewebsites.net/api/continuouswebjobs
Run Code Online (Sandbox Code Playgroud)

我可以看到这样的状态:

[{"status":"Starting","detailed_status":"4660f6 - Starting\r\n","log_url":"https://mysite.scm.azurewebsites.net/vfs/data/jobs/continuous/WebJobs/job_log.txt","name":"WebJobs","run_command":"mysite.WebJobs.exe","url":"https://mysite.scm.azurewebsites.net/api/continuouswebjobs/WebJobs","extra_info_url":"https://mysite.scm.azurewebsites.net/azurejobs/#/jobs/continuous/WebJobs","type":"continuous","error":null,"using_sdk":true,"settings":{}}]
Run Code Online (Sandbox Code Playgroud)

如果有人能帮我理解这里出了什么问题,我真的很感激.

azure azure-web-sites azure-webjobs azure-webjobssdk

10
推荐指数
2
解决办法
3844
查看次数

如何在本地测试Azure Webjobs SDK项目?

我希望能够在实际将Azure WebJobs SDK项目发布到Azure之前在本地测试它.

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

Program.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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Functions.cs:

public class Functions
{
    // This function will get triggered/executed when a new message is …
Run Code Online (Sandbox Code Playgroud)

azure-webjobs azure-webjobssdk

10
推荐指数
2
解决办法
6282
查看次数

Azure WebJobs (3.x) 连续作业未在仪表板中显示函数

我们有一个 Azure WebJob (3.x) 在 Azure 中的 API 应用程序下运行,全部为 Core 2.1。它可以正常发布并运行,但不显示任何函数或在仪表板上列出函数调用。这很奇怪,因为作业的控制台输出确实显示它检测到一个函数:

[10/17/2018 09:26:19 > fa7c81: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[10/17/2018 09:26:19 > fa7c81: SYS INFO] Status changed to Running
[10/17/2018 09:26:19 > fa7c81: INFO] 
[10/17/2018 09:26:19 > fa7c81: INFO] D:\local\Temp\jobs\continuous\SubmissionJob\43ucb4rv.ipc>dotnet SubmissionJob.dll  
[10/17/2018 09:26:21 > fa7c81: INFO] dbug: Microsoft.Extensions.Hosting.Internal.Host[1]
[10/17/2018 09:26:21 > fa7c81: INFO]       Hosting starting
[10/17/2018 09:26:21 > fa7c81: INFO] info: Microsoft.Azure.WebJobs.Hosting.JobHostService[0]
[10/17/2018 09:26:21 > fa7c81: INFO]       Starting JobHost
[10/17/2018 09:26:21 > fa7c81: INFO] …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-webjobs azure-webjobssdk .net-core

10
推荐指数
1
解决办法
2438
查看次数

Azure Webjob TextWriter记录器在我的方法中间处理

我正在使用带有Windows Azure Storage SDK的Webjob.当一个新项目出现在队列中时,我的类中会调用一个方法.根据SDK文档,如果我将TextWriter作为参数添加到我的方法中,SDK将为我提供一个我可以写入的TextWriter,它将显示在Webjob的日志记录基础结构中.这使得诊断问题和解决问题非常容易.

public async static void ProcessQueueMessage([QueueTrigger("queueName")]MyModelType model, TextWriter logger)
{

    await logger.WriteLineAsync(string.Format("Processing Item {0}", model.SasUrl));

    // Some work here

    await logger.WriteLineAsync(string.Format("Done Processing Item {0}", model.SasUrl));
}
Run Code Online (Sandbox Code Playgroud)

但是,很常见的是,在我的方法体内,TextWriter正在被处理掉.我在第二个logger.WriteLineAsync上遇到以下异常:

System.ObjectDisposedException was unhandled by user code
  HResult=-2146232798
  Message=Cannot write to a closed TextWriter.
  Source=mscorlib
  ObjectName=""
  StackTrace:
       at System.IO.__Error.WriterClosed()
       at System.IO.StringWriter.Write(Char[] buffer, Int32 index, Int32 count)
       at System.IO.TextWriter.WriteLine(String value)
       at System.IO.TextWriter.SyncTextWriter.WriteLine(String value)
       at System.IO.TextWriter.SyncTextWriter.WriteLineAsync(String value)
       at NameOfProject.Program.<ProcessQueueMessage>d__8.MoveNext() in c:\Dev\Path\To\Program.cs:line 173
  InnerException:
Run Code Online (Sandbox Code Playgroud)

我找不到其他人遇到这个问题,所以我无法想象SDK或webjobs基础设施中存在错误.

有没有办法告诉记录器是否在通话前被处理掉了?

有没有办法在我的方法中创建一个新的记录器,它将参与WebJobs记录子系统和UI?

azure-web-sites azure-webjobs azure-webjobssdk

9
推荐指数
1
解决办法
1299
查看次数