我正在使用Web作业sdk玩一点,我只需要通过调度程序调用一个方法,它应该将1-n文件写入存储.WebJobs SDK的优点在于我不需要包含Azure Storage SDK,所有内容都是"绑定"的.它在我指定文件名时有效,但我的"WriteCustomFile"方法只写了一个名为"{name}"的文件
码:
class Program
{
static void Main(string[] args)
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("WriteFile"));
host.Call(typeof(Program).GetMethod("WriteCustomFile"), new { name = "Helloworld1.txt" });
host.Call(typeof(Program).GetMethod("WriteCustomFile"), new { name = "Helloworld2.txt" });
host.Call(typeof(Program).GetMethod("WriteCustomFile"), new { name = "Helloworld3.txt" });
//host.RunAndBlock();
}
[NoAutomaticTrigger]
public static void WriteFile([Blob("container/foobar.txt")]TextWriter writer)
{
writer.WriteLine("Hello World..." + DateTime.UtcNow.ToShortDateString() + " - " + DateTime.UtcNow.ToShortTimeString());
}
[NoAutomaticTrigger]
public static void WriteCustomFile(string name, [Blob("container/{name}")] TextWriter writer)
{
writer.WriteLine("Hello World New ..." + name + ":" + DateTime.UtcNow.ToShortDateString() …Run Code Online (Sandbox Code Playgroud) 我有一个Azure WebJob,当它从队列中获取消息时,我收到错误
"功能有错误.有关详细信息,请参阅Azure WebJobs SDK仪表板".
仪表板显示没有错误,它只是坚持我的连接字符串没有设置它们,否则它不会接收消息.
在本地调试时如何找出实际错误是什么?
我们的后端正在收集原始数据并将其推送到Azure存储队列.我们想对每个排队的消息做两件事:
为了保持小而清晰,我们希望有两个指向同一队列的WebJob函数:
public static void ArchiveRawData([QueueTrigger("raw")] RawData data, [Blob("{Ticks}.dat")] out string raw)
{
raw = data.Data;
}
public static void ParseRawData([QueueTrigger("raw")] RawData data, [Queue("result")] out Parsed parsedData
{
var parsed = Parser.Parse(data.Data);
parsedData = parsed;
}
Run Code Online (Sandbox Code Playgroud)
但是,这并不工作:无论是在ArchiveRawData或ParseRawData得到消息,而不是其他.
是否有一个选项可以使上述场景有效?现在看来消息在第一个函数完成后自动出列(无论哪一个).但我认为WebJobs SDK可以检测到具有相同QueueTrigger的多个函数,并且只有在所有函数完成后才能使消息出列.
为了解决这个问题,我们目前在一个函数中有两个输出:
public static void ParseRawData([QueueTrigger("raw")] RawData data, [Queue("result")] out Parsed parsedData, [Blob("{Ticks}.dat")] out string raw)
{
var parsed = Parser.Parse(data.Data);
parsedData = parsed;
raw = data.Data;
} …Run Code Online (Sandbox Code Playgroud) 我们有一个根据需要部署的天蓝色webjob.有没有办法将此更改为按计划运行而无需重新部署?
在这方面没有很多信息.
我尝试创建一个像这样的新计划集合并添加一个作业来运行现有的webjob,但这似乎也没有用.
我更喜欢在GUI门户中执行此操作,但如果不可能,我将在powershell中执行此操作(如果可能的话).
(另外,如果它只能通过重新部署来改变,我需要知道它并且它有效地回答了这个问题)
在"如何使用Azure的服务总线与WebJobs SDK"天青文档本文介绍的使用[ServiceBusTrigger]属性,用于集成WebJob和Azure的服务总线主题的消息.但是,在Visual Studio 2015中使用默认的Azure WebJobs项目模板,对ServiceBusTrigger的引用会导致以下编译时异常:
找不到类型或命名空间名称'ServiceBusTriggger'(您是否缺少using指令或程序集引用?)
手头的问题是Nuget的Microsoft.Azure.WebJobs包不包含ServiceBusTriggerAttribute类.
是否有可以添加的Nuget包,其中包含这个非常需要的类?
我尝试过包含Nuget的WindowsAzure.ServiceBus包,但它也不包含它.
如果没有ServiceBusTriggerAttribute,我将无法连接此WebJob以使用来自Azure Service Bus主题的消息.任何帮助将不胜感激!谢谢!
我刚为我的应用程序创建了一个新的部署槽,将发布配置文件导入Visual Studio,但在部署之后我收到以下错误消息:
错误8:创建WebJob计划时发生错误:找不到与提供的WebSiteName [myapp__staging]和WebSiteUrl [ http://myapp-staging.azurewebsites.net]匹配的网站.
我有2个webjobs,一个连续和预定的webjob.
我已经登录了正确的Azure帐户,如此答案所述.
我是否需要设置其他内容才能将我的应用部署到带有webjobs的临时部署插槽?
我的应用程序正在使用ASP.NET,如果它有所作为?
asp.net azure visual-studio azure-webjobs azure-deployment-slots
查看Kudu Azure WebJobs API文档https://github.com/projectkudu/kudu/wiki/WebJobs-API我看到我可以通过编程方式管理WebJobs.
缺少的是调用获取连续webjob的单个调用的详细信息.对于调用,我的意思是单个执行给定消息的函数.
我想要做的是,对于进入毒性队列的消息,获取父调用的异常消息.在有毒消息中,我使用json prop $ AzureWebJobsParentId获取父调用的id.
我想用一个函数来管理毒性队列,该函数通过电子邮件发送错误的详细信息并将消息移动到死信队列中.
知道这是否可行?
我的Azure WebJob曾经在VS2015调试器中运行,但我发现它逐渐变得非常间歇,现在根本不会运行.我将其部署到Azure时工作正常.该作业标记为RunOnStartUp.
public class Program
{
static void Main()
{
var config = new JobHostConfiguration();
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();
}
}
public class TestJob : BaseJob
{
public static async Task StartupJob([TimerTrigger("05:00:00", RunOnStartup = true)] TimerInfo timerInfo, TextWriter log)
{
log.WriteLine("StartupJob");
await Jobs.Test(some params);
log.WriteLine("Sorted");
}
}
Run Code Online (Sandbox Code Playgroud)
要使它在调试器中运行,我需要做什么?
我有一个Azure Web作业,计划使用settings.job文件中的cron表达式每5分钟运行一次.如果该过程未在5分钟内完成,Azure将启动该作业的另一个实例,还是会等到第一个结束?
我想确保它等到第一个完成所以它没有运行多个实例.
我正在尝试将azure SDK从v1更新到v3,并将其连接到Azure存储模拟器进行测试;使用控制台应用程序和.NET Framework。
它似乎不像以前使用的任何触发器一样,错误中的“ SomeFunction”是带有超时的简单QueueTrigger。
异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:'错误索引方法'* .SomeFunction'
内部异常:InvalidOperationException:未配置存储帐户“存储”。
[Timeout("00:30:00")]
public static async Task SomeFunction([QueueTrigger("queue")] CloudQueueMessage message, CancellationToken cancellationToken)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
app.config:
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
<add name="AzureWebJobsStorage" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
</connectionStrings>
<appSettings>
<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
<add key="AzureQueueName" value="queue" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)