我是Azure WebJobs开发的新手,我正在尝试在Visual Studio中测试我的WebJob。我的工作连续运行,但不执行runWebJob()方法?我在host.CallAsync行中指定的。这是我的代码:
public class Program {
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
var host = new JobHost(config);
host.CallAsync(typeof(Program).GetMethod("runWebJob"));
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
[NoAutomaticTrigger]
public static async Task runWebJob()
{
Console.WriteLine("RUNNING METHOD");
}
}
答案 0 :(得分:2)
我测试了你提到的代码。我们需要设置类程序 公共。然后它应该工作。
由于您的异步功能没有等待,我添加等待测试。
public class Program
{
static void Main(string[] args)
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
var host = new JobHost();
host.CallAsync(typeof(Program).GetMethod("runWebJob"));
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
[NoAutomaticTriggerAttribute]
public static async Task runWebJob()
{
await Task.Delay(1000); //just for test
Console.WriteLine("RUNNING METHOD");
}
我在我这边测试。
注意:如果您将host.CallAsync(typeof(Program).GetMethod("runWebJob"))
更改为host.Call(typeof(Program).GetMethod("runWebJob"))
并将功能更改为同步功能,则可以看到详细错误。
<强>更新强>
默认情况下,WebJobs SDK会查找名为AzureWebJobsStorage和AzureWebJobsDashboard的连接字符串
如果您还没有在app.config文件中添加以下连接字符串,请尝试添加它。更多详情请参阅document。
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=[accountname];AccountKey=[accesskey]"/>
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=[accountname];AccountKey=[accesskey]"/>
</connectionStrings>