我正在使用Web Jobs 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() + " - " + DateTime.UtcNow.ToShortTimeString());
}
}
我想要实现的只是用给定的文件名调用“WriteCustomFile”。我发现的所有样本都在考虑“Blob输入/输出”的想法。我找到了这个样本,但它似乎更像是一个黑客;) http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK
目前有办法做到这一点吗?
答案 0 :(得分:7)
WebJobs SDK 3.0.1不支持Host.Call
的“花式”参数绑定(以及从仪表板调用) - 我们将在未来的版本中添加它。
目前,解决方法是明确指定blob的路径:
static void Main(string[] args)
{
JobHost host = new JobHost();
host.Call(
typeof(Program).GetMethod("WriteCustomFile"),
new {
name = "Helloworld1.txt",
writer = "container/Helloworld1.txt" });
}
[NoAutomaticTrigger]
public static void WriteCustomFile(string name, [Blob("container/{name}")] TextWriter writer)
{
writer.WriteLine("Hello World New ..." + name + ":" + DateTime.UtcNow.ToShortDateString() + " - " + DateTime.UtcNow.ToShortTimeString());
}