我可以从Azure网站调用Azure webjob并传递参数吗?

Lee*_*Kay 12 azure azure-web-sites azure-webjobs

我有一个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?

谢谢.

Cri*_*ian 10

您可以使用以下地址调用带有参数的azure webjob:" https://mywebsite.scm.azurewebsites.net/api/triggeredwebjobs/mywebjob/run?arguments=myparameter "

class Program
{
    static void Main(string[] args)
    { 
        if (args[0]=="myparameter")
        ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

一些信息:https://github.com/projectkudu/kudu/pull/1183


Ami*_*ple 8

如果您想从您的网站调用WebJob,您可以做的最好的事情就是在您的网站内部使用WebJob代码并简单地调用该代码,您仍然可以轻松地从您的网站内部使用WebJob SDK.(用于调用WebJobs SDK方法示例:http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK ).

您不希望从您的网站调用WebJob的原因是该调用包含您不在您的网站上存储的秘密(部署凭据).

如果您更喜欢将WebJob和网站代码分开,最好的办法是使用队列进行通信,WebJob会侦听队列,并且网站会将请求推送到队列.

关于原始问题,目前无法将参数传递给WebJob调用调用.

  • 不确定这是不是一个好主意.据我所知,Webjobs适用于长期运行的任务,您不一定要通过Web应用程序或REST服务调用这些任务,因为这些任务不是为长时间运行的任务而设计的. (4认同)