我在使用Web Jobs sdk玩的更多,我只需要通过调度程序调用一个方法,它应该将1-n文件写入存储中。 WebJobs SDK的优点在于,我不需要包括Azure存储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”。我发现的所有样本都考虑到了“斑点输入/输出”的想法。我找到了这个样本,但似乎更像是一个hack;)
http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK
目前有没有办法做到这一点?
最佳答案
WebJobs SDK 3.0.1不支持Host.Call
的“ fancy”参数绑定(并从仪表板调用)-我们将在以后的版本中添加它。
目前,解决方法是显式指定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());
}