Tag: azure webjobssdk

连续Azure WebJob何时停止NoAutomaticTrigger类型作业的通知

所有, 我正在将现有的Worker Role代码迁移到Azure Web作业。 我正在尝试使用WebJob SDK(1.0),以便与Azure网站完全集成。 我的困难在于,JobHost不能很好地处理通常基于属性的调用选项(队列,Blob等)之外的作业。 我已经有了标准代码,我无法更改以收听Azure队列/主题等。因此我无法使用WebJob代码执行此操作。 因此我需要使用WebJob Call方法: var cancelTokenSource = new CancellationTokenSource(); var onStartMethod = typeof(Program).GetMethod(“OnStart”, BindingFlags.Static | BindingFlags.Public); host.CallAsync(onStartMethod, cancelTokenSource.Token) .ConfigureAwait(false) .GetAwaiter() .GetResult(); 注意:我正在使用自己的CallAsync,因为所有建议都是在使用库时使用ConfigureAwait(false),但是JobHost的内部工作没有这样做,所以我自己复制了它的“调用”代码但是使用了ConfigureAwait。 据我所知,取消令牌在JobHost中没有做任何事情。 我的问题是我需要调用host.RunAndBlock(); 停止工作退出,这很好,但后来我需要运行一些清理处理。 我无法使用OnStop方法重新调用“CallAsync”,因为主机已被取消,所以我所能做的就是直接调用我的OnStop方法。 不幸的是,我失去了通过提供的TextWriter类写入WebSite日志的能力。 我认为我需要的是JobHost在RunAndBlock中调用我的方法的一种方式,所以我可以拿起主机关闭时触发的取消令牌,然后执行我的清理代码….但似乎没有任何方式来做到这一点。 我有一种明显的方法吗? JobHost在处理场景之外似乎非常差,这是常态:(

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

使用Azure WebJobs SDK,我想创建一个异步函数,它将接收ServiceBus队列输入并写入ServiceBus队列输出。 异步方法不能有参数,例如,BlobStorage上的示例似乎是通过使用Streams和TextWrite来解决的。 但是,当我尝试使用ServiceBus参数执行相同操作时,我收到exception。 public static async void Transform( [ServiceBusTrigger(“%InputQueue%”)] String input, [ServiceBus(“%OutputQueue%”)] TextWriter output, TextWriter log) 错误索引方法’FilterCurrentCpesToNewCpes’ 无法绑定ServiceBus以键入“System.IO.TextWriter”。 我收到了类似Stream的消息。

具有计时器触发和Blob触发的连续Web作业

我在使用azure jobs sdk及其扩展的同一Web作业控制台应用程序中具有以下function。 定时触发器查询文件的API端点,对其执行一些额外的工作,然后将文件保存到名为blahinput的blob中。 现在第二个方法“ProcessBlobMessage”应该在blahinput中识别新的blob文件,并用它做一些事情。 public static void ProcessBlobMessage([BlobTrigger(“blahinput/{name}”)] TextReader input, string name, [Blob(“foooutput/{name}”)] out string output) {//do something } public static void QueryAnAPIEndPointToGetFile([TimerTrigger(“* */1 * * * *”)] TimerInfo timerInfo) { // download a file and save it to blob named blah input} 这里的问题是:当我将上述Web作业部署为连续时,只有定时器触发的事件似乎被触发,而应该识别新文件的函数永远不会被触发。 在同一个Web作业中是否不可能有两个这样的触发器?

拦截Azurefunction主机关闭:刷新应用程序洞察TelemetryClient

我正在使用Azurefunction:我主要尝试将现有的webjob迁移到Azurefunction,现在是时候将Application Insights集成到我的一个function中了。 所以基本上我只需要一个TelemetryClient实例,但这假设我能够在应用程序停止时刷新内存缓冲区。 我使用过TimerTrigger,但它仅用于测试目的。 我引用了Microsoft.ApplicationInsights nuget包( 来自这篇SOpost ),我的run.csx文件看起来像这样: using System; using Microsoft.ApplicationInsights; using Microsoft.Azure.WebJobs; public static void Run(TimerInfo myTimer, TraceWriter log) { MyTimerJob.TelemetryClient.TrackEvent(“AzureFunctionTriggered”); log.Verbose($”C# Timer trigger function executed at: {DateTime.Now}”); } public static class MyTimerJob { public static readonly TelemetryClient TelemetryClient; static MyTimerJob(){ TelemetryClient = new TelemetryClient() { InstrumentationKey = “MyInstrumentationKey” }; // When it […]

AzureWebJobsDashboard配置错误

我使用.NET Framework 4.6在Visual Studio 2015中创建了一个新的Azure WebJob项目。 在app.config中,我设置了三个连接字符串: AzureWebJobsDashboard AzureWebJobsStorage MyDatabaseConnectionString AzureWebJobsDashboard和AzureWebJobsStorage连接字符串是相同的,它们都指向我的存储帐户。 我包含了一个连接字符串 – 因为它们都是相同的,除了“名称”。 一切看起来都对我,但我收到以下错误: 未正确设置Microsoft Azure WebJobs仪表板的配置。 在Microsoft Azure网站配置中,必须使用以下格式设置名为AzureWebJobsDashboard的连接字符串:DefaultEndpointsProtocol = https; AccountName = NAME; AccountKey = KEY指向存储Microsoft Azure WebJobs运行时日志的Microsoft Azure存储帐户。 顺便说一下,我知道web作业正在读取app.config,因为我的代码能够连接到我的数据库并更新一些记录。 知道我做错了什么吗?

找不到工作职能。 尝试公开您的工作类和方法

首先,我查看了其他SOpost,并显示相同的错误消息,似乎没有解决我的问题。 我尝试了许多排列和选项。 我的函数构建正常,但不会在CLI中运行,我得到以下神秘错误。 MSFT文档似乎也没有答案。 找不到工作职能。 尝试公开您的工作类和方法。 如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等)。 我正在尝试运行计时器作业,然后将一组消息写入事件中心。 我错过了什么? 我已经打了好几个小时。 function: [FunctionName(“CreateData”)] public static async Task Run([TimerTrigger(“0 */5 * * * *”)]TimerInfo myTimer, [EventHub(“murraytest”, Connection = “evingest”)] IAsyncCollector myeventhub, TraceWriter log) { await myeventhub.AddAsync(“data1”); await myeventhub.AddAsync(“data2”); await myeventhub.AddAsync(“data3″); log.Info($”COMPLETED: {DateTime.Now}”); } local.settings.json: { “IsEncrypted”: false, “Values”: { “AzureWebJobsStorage”: “UseDevelopmentStorage=true”, “Eventhub”: “UseDevelopmentStorage=true”, “AzureWebJobsDashboard”: “”, “evingest”: “Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=LtcqBLT5VWjg0dGMdIvxCcEGs8902010Y6y14iGg=” […]

在webjob sdk代码fork之后为公共类ServiceBusTriggerAttribute获取exception

我从这里获得所有webjod sdk代码 我想使用Microsoft.Azure.WebJobs.ServiceBus.dll使类ServiceBusTriggerAttribute公共和非密封并创建nuget包但是当我在我的webjob项目中使用此nuget获得以下exception时。 mscorlib.dll中发生了未处理的“System.IO.FileLoadException”类型exception 附加信息:无法加载文件或程序集’Microsoft.Azure.WebJobs.ServiceBus,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35’或其依赖项之一。 强名称validation失败。 (HRESULTexception:0x8013141A)