Azure Webjobs - call method with parameter and invoke binding

azure, azure-webjobs

Solution

WebJobs SDK 3.0.1 does not support the "fancy" parameter binding for `Host.Call` (and invoke from dashboard) - we'll add that in a future version.

For now, the workaround is to explicitly specify the path to the 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());
}

Problem

I´m playing a bit more with the web Jobs sdk and I just need to call a method via a scheduler and it should write 1-n files to the storage. The good part of the WebJobs SDK is that I don´t need to include the Azure Storage SDK and everything is "binded". It works when I specify the filename, but my "WriteCustomFile" method just writes a file called "{name}" Code: ``` 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()); } } ``` What I would like to achieve is just to call the "WriteCustomFile" with a given filename. All samples that I found are using the "Blob Input / Output" idea in mind. I found this sample, but it seems more like a hack ;) http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK Is there currently a way to do this?

Original source