在Azure中,一旦触发的Web作业开始了吗?我们需要做什么 - 阻止它?
背景:
我们的Web作业填充服务总线队列,然后扩展我们的工作者角色 - 我们的工作者角色正在使用第三方API - 并且正在收到错误.这导致我们的队列变得越来越大 - 并且创建了越来越多的工作者角色.这很贵.
我有一个天蓝色的webjob,它有api键等的一些appsettings.
我还有一堆PRODUCTION azure应用程序设置(在门户网站中指定),应该覆盖我的webjob配置appsettings ..但他们没有.
对于我的网站,他们按预期工作,一切都很好.但是对于webjobs,它们只是被完全忽略,而是使用配置中的应用程序设置.
这是天蓝色的错误吗?所有文档都表明这应该有效.
编辑
我发现这个博客都是关于使用CloudConfigurationManager.GetSetting所以我已经实现了它仍然无法工作 - 仍然使用web作业的应用程序设置文件中定义的设置:(
谢谢
我有一个Azure webjob,我想从Azure网站调用.我想将字符串参数从网站传递到webjob.
我知道我可以将webjob作为REST API调用(https://github.com/projectkudu/kudu/wiki/Web-jobs).
所以我可以在没有任何参数的情况下调用webjob:POST jobs/triggered/myjobname/run
但是在最后添加参数似乎不起作用,即jobs/triggered/myjobname/run?myparam1 = value1
我在使用Microsoft.WindowsAzure.Jobs中的属性进行绑定时看到的信息没有提到我的情况,只是绑定到Azure存储项(http://blogs.msdn.com/b/jmstall/archive/2014/01/28 /trigger-bindings-and-route-parameters-in-azurejobs.aspx).
我想做的是可行的吗?我是否需要执行诸如在Azure存储队列中创建新项目以触发我的webjob?
谢谢.
我将一个Web作业附加到我的Azure网站.webjob准备一个文件,我想将它保存在网站上的适当文件夹中.
Environment.CurrentDirectory 在脚本上运行会返回Temp目录下的路径: Temp\jobs\triggered\WEBJOBNAME\q0uwrohv.x5e
我试着在目录树上下载:
string path = Path.Combine(Environment.CurrentDirectory, @"..\..\..\..\..\Data")
Run Code Online (Sandbox Code Playgroud)
但它不起作用:
C:\DWASFiles\Sites\WEBSITENAME\Temp\jobs\triggered\WEBJOBNAME\q0uwrohv.x5e\..\..\..\..\..\Data
Run Code Online (Sandbox Code Playgroud)
如何将文件从WebJob制作并保存到特定路径?
我不想使用blob商店.
当我在创建多个webjobs的现有站点上发布站点时,这将删除服务器上的所有文件,并删除所有Web作业.
我假设这是因为webjobs存储在App_Data文件夹中.删除APP_Data目录时,将删除作业.
如何在发布时避免删除app_data文件夹?
目前在Azure中,当WebJob抛出异常时,异常会被JobHost(某种程度上)捕获并处理,然后将异常记录到可通过托管webjob的Web App刀片提供的仪表板中.有没有办法拦截错误处理或覆盖它,以便我可以插入我的Application Insights实例?
我有一个基于BotFramework 3.5的机器人,并作为WebApp托管在Azure上.我没有遇到机器人需要响应用户输入的情况的实施问题.但是,有必要教他按一些时间表开始对话.为了达到目标,我创建了一个WebJob,它基本上是一个简单的控制台应用程序.以下是用于启动从bot到用户的消息的代码:
var botAccount = new ChannelAccount(id: from);
var userAccount = new ChannelAccount(id: to);
var conversation = new ConversationAccount(false, conversationId);
var connector = new ConnectorClient(serviceUrl);
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = userAccount;
message.Conversation = conversation;
message.Text = text;
message.Locale = locale;
await connector.Conversations.SendToConversationAsync((Activity)message);
Run Code Online (Sandbox Code Playgroud)
from, to, serviceUrl, conversationId - 取自之前的对话,所以我希望它们有效.但是SendToConversationAsync 抛出异常:
System.UnauthorizedAccessException: Authorization for Microsoft App ID 3a26a4d4-f75a-4feb-b3e0-37a7fa24e5fc failed with status code Unauthorized and reason phrase 'Unauthorized' ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Azure WebJob来发送BrokeredMessage到Azure ServiceBus主题,创建和发送消息的实际行为是微不足道的,但是我一直无法找到自动创建Scheduled WebJob的方法.
自动化工作流程应如下工作:
Azure管理门户为此功能提供了一个很好的UI,它在所选的WebSite,Azure Scheduler作业集合和Azure Scheduler作业中创建Azure WebJob:

似乎没有使用Azure Service Management PowerShell模块创建计划的Azure WebJob的类似机制.当然可以创建新的WebJobs,Azure Scheduler集合和作业 - 但是我不知道Azure Scheduler发布到哪个URL或存储队列来安排Azure WebJobs.
powershell azure azure-web-sites azure-scheduler azure-webjobs
我在连续的Web作业中编写了以下函数:
public static void fun1([TimerTrigger("24:00:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//Code}
public static void fun2([TimerTrigger("00:01:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//code}
Run Code Online (Sandbox Code Playgroud)
其中,fun1没有被再次调用(在启动web作业后只调用一次),并且每个进程完成后,fun2将被调用1分钟触发器.
任何人都可以解释为什么?我做错了吗?
我正在Azure中创建一个功能应用程序,并希望使用队列触发器.我知道如何在设计时配置队列名称,例如:
[FunctionName("MyTestFunction")]
public static void Run([QueueTrigger("myqueue-items", Connection = "testdelete")]string myQueueItem, TraceWriter log)Run Code Online (Sandbox Code Playgroud)
但是,我希望能够在配置文件中定义和引用它.我知道function.json(可能是这个),host.json和local.settings.json的存在,但我不知道如何在那里设置队列名称并在函数中引用它.
如果我部署在visual studio中创建的新创建的函数(使用新的15.3更新),我可以在部署后的function.json文件中看到以下内容(即使我在本地开发时该文件不存在):
"bindings": [
{
"type": "queueTrigger",
"queueName": "myqueue-items",
"connection": "testdelete",
"name": "myQueueItem"
}Run Code Online (Sandbox Code Playgroud)
我发现,如果我创建该文件,并将"queueName"更改为与实际函数中的值不匹配的内容,则遗憾的是它不会覆盖它(我猜这太容易了).
如何在函数QueueTrigger属性中引用function.json中的绑定?
据推测,无论解决方案是什么,我都可以使用毒物队列处理来做同样的事情吗?
我想这样做的原因是因为我需要部署完全相同函数的多个实例,但是将每个实例指向不同的队列(为了绕过最大内存限制).
谢谢.