Tag: 蔚webjobs

为什么我的Azure WebJobs“settings.job”文件被忽略?

当Azure WebJobs由于某种原因而停止或重新启动时,在主机控制台进程终止之前,默认宽限期为5秒。 显然,可以通过在WebJob发布到Azure时将“settings.job”文件包含在内来增加此时间段,如此处所述 。 不幸的是,我不能让这个工作用于我的网站,关机时间总是 5秒,尽管这是一个连续的WebJob,发布到设置为“始终开启”的基本应用服务。 根据链接中的示例代码,我的Program.cs如下所示: class Program { static void Main() { var host = new JobHost(); host.RunAndBlock(); } } 和我的Functions.cs看起来像这样: public class Functions { public static async Task ProcessQueueMessageAsync( [QueueTrigger(“testq”)] string message, TextWriter log, CancellationToken cancellationToken) { Console.WriteLine(“Function started.”); try { await Task.Delay(TimeSpan.FromMinutes(10), cancellationToken); } catch (TaskCanceledException) { Shutdown().Wait(); } Console.WriteLine(“Function completed […]

具有Http触发函数的连续Azure WebJob

我目前有一个azure webjob,它可以执行从一个数据库到另一个数据库的每日同步,但是也希望添加手动触发同步的function。 我在webjob项目中设置了如下函数: public static void SyncData([TimerTrigger(“0 0 5 * * *”, RunOnStartup = false)] TimerInfo timerInfo) { } [NoAutomaticTrigger] public static Task SyncAll(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncBranches(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncCustomers(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncInventory(TraceWriter log){ } 我可以在webjob下的Kudu仪表板中看到这些函数,但我不确定如何使用MS文档( 此处 )中列出的http请求触发函数: http://.azurewebsites.net/api/ 当我向该端点发出请求时,我收到了404响应 – 为了通过http请求手动触发这些function,我需要做什么? 谢谢,瑞恩

调试,未找到源,找不到AsyncExtensions.cs

我试图在azure上调试webjob,我收到以下错误:找不到源,找不到AsyncExtensions.cs。 我正在开发VS 2015,webjob是部署在Azure上的ASP.NET MVC解决方案的一部分。 我通过右键单击它并执行Publish as Azure webjob并选择Debug configuration来发布webjob。 我通过右键单击webjob并选择Debug,Start New Instance来启动调试。 当执行到达有问题的行时,我得到上面的错误而不是与有问题的行对应的错误。 这发生在几个不同的webjobs上。

在将.NET Core控制台应用程序部署到Azure WebJobs时加载hostpolicy.dll时出错

我已按照本教程将.NET Core控制台应用程序部署到Azure Web Service WebJob。 我的应用程序在本地运行没有任何问题(使用dotnet 1.0.0-preview2-003131 )但是当我尝试从Azure控制台运行它时出现以下错误: 无法从[D:\ local \ VirtualDirectory0 \ site \ wwwroot \ app_data \ jobs \ triggered \ PopcornExportWebJob \ hostpolicy.dll]加载dll,HRESULT:0x800700C1 从[D:\ local \ VirtualDirectory0 \ site \ wwwroot \ app_data \ jobs \ triggered \ PopcornExportWebJob]加载所需的库hostpolicy.dll时发生错误 Azure dotnet的版本是1.0.0-rc4-004771 ,hostpolicy.dll文件与我在本地使用的文件相同。 事实上,当我从Azure下载部署的zip时,当我在本地运行它时,它工作正常。 但它在Azure环境中失败了。 另外,这是我的project.json: { “publishOptions”: { “include”: [ “run.cmd” ] […]

如何从Azure webjob与Azure webapp进行通信?

我正在运行Azure webjob和Azure webapp。 作业定期运行,并且webapp中需要作业结果。 我如何在那里得到结果? 我尝试使用WCF netNamedPipeBinding但由于Azure webapps没有启动任务,我无法将net.pipe绑定添加到IIS网站,也无法启用net.pipe协议。 我现在使用basicHttpBinding但这个绑定暴露给我绝对不想要的整个互联网。 我只想在同一台机器上运行的webjob和webapp之间进行机器本地通信。 更正 :我认为我在Azure上工作但事实并非如此。 在Azure上运行时,我从webjob收到错误: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:80 (使用basicHttpBinding )。 可能webapp有一个我不知道的内部端口号。

从代码运行触发的Azure WebJob

我创建了一个控制台应用程序上传为Azure触发器Webjob。 当我从Azure门户运行它时它工作正常。 我想从我的C#代码中运行它。 我不想使用队列或服务总线。 我只想在用户在我的网络应用中执行特定操作时触发它。 搜索后我得到了一个解决方案来触发预定的http://blog.davidebbo.com/2015/05/scheduled-webjob.html 知道如何从代码运行吗?

entity framework批量插入虚幻慢

我正在使用EF 6.我试图插入大约200.000个实体,同时在每100个实体后保存对数据库的更改。 问题是需要11个小时来保存50.000个实体,它仍然落后。 我正在使用WebJobs运行它,并且作业在与主网站相同的azure webapp上发布。 问题是因为和WebJob没有足够的资源,或者在100个实体之后保存,还是方法? 方法 public void SaveLeadsForBuyer(ISenderModel model) { var rowCounter = 0; foreach (var deliveryRecord in model.Customers.Select(customerModel => new DeliveryRecord() { BuyerId = model.Buyer.Id, AspNetUserId = customerModel.Id, DeliveryType = model.Buyer.DeliveryType, CreatedOn = DateTime.UtcNow })) { ++rowCounter; _unit.Repository().Insert(deliveryRecord); _unit.SaveChangesPartially(rowCounter, 100); } _unit.SaveChanges(); } 帮手 public static class UnitOfWorkHelper { /// /// Helper […]

不接受Azurefunction(ILogger或TraceWriter)的上次日志记录参数

将我自己的项目从早期(几个月前)版本的Azure Functions升级到当前版本后,从VS启动时出现以下错误。 GetLoginUrl:Microsoft.Azure.WebJobs.Host:错误索引方法’Login.GetLoginUrl’。 Microsoft.Azure.WebJobs.Host:无法将参数’log’绑定到类型ILogger。 确保绑定支持参数Type。 如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等)。 之前,我曾经将TraceWriter log作为我方法的最后一个参数,但后来我发现我应该使用ILogger 。 在我做出改变之前,我得到了与上面相同的错误。 ILogger似乎映射到程序集Microsoft.Extensions.Logging.Abstractions 。 也许这就是为什么它不被认可? 应该使用哪种ILogger ? 这是方法签名。 [FunctionName(“GetLoginUrl”)] public static HttpResponseMessage GetLoginUrl( [HttpTrigger(AuthorizationLevel.Anonymous, “get”, Route = null)]HttpRequestMessage req, ILogger log) 我没有尝试将此部署到Azure。 不幸的是,创建一个全新的Functions项目并没有帮助,因为没有.CS文件可以查找以纠正这个问题。

Azure WebJob的BlobInput和BlobOutput类在哪里?

我正在创建一个Azure WebJob控制台应用程序,用于调整上传到blob存储的图像的大小。 在线跟踪任何代码示例时,我无法引用和使用BlobInput和BlobOutput输入参数属性。 我正在使用NuGet包Microsoft.Azure.Jobs 0.3.0-beta(和Microsoft.Azure.Jobs.Core)。 找到哪些名称空间是BlogInput和BlobOutput? 我需要另一个NuGet包吗? 这是我的代码无法编译,因为它无法解析BlobInput和BlobOutput: using Microsoft.Azure.Jobs; using System.IO; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { JobHost host = new JobHost(); host.RunAndBlock(); } public static void SquishNewlyUploadedPNGs([BlobInput(“input/{name}”)] Stream input, [BlobOutput(“output/{name}”)] Stream output) { //… } } }

我是否可以创建一个Azure Webjob,它将function公开给仪表板但不使用Azure存储?

我想创建一个Azure Webjob来满足批处理需求(特别是它会不断迭代SQL Azure数据库表,获取某些记录,执行一些操作然后更新表)。 我不需要Azure存储。 在这种情况下,我仍然可以将我的方法暴露给Azure函数调用仪表板吗? 或者是Azure存储属性是唯一暴露的方法? 作为一个例子,我可能有一个function: ShowTotalNumRecordsProcessedToday() 我希望公开并能够从仪表板调用。 我已经创建了一些公共测试function,但它们没有显示在仪表板中。 我可以在我的场景中这样做吗?