Azure WebJobs SDK和模拟器-触发器不起作用

时间:2018-11-23 10:22:14

标签: c# azure azure-storage azure-webjobs azure-sdk-.net

我正在尝试将azure SDK从v1更新到v3,并将其连接到Azure存储模拟器进行测试;使用控制台应用程序和.NET Framework。

似乎不像以前使用过的任何触发器,错误中的“ SomeFunction”是带有超时的简单QueueTrigger。

异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:'错误索引方法'* .SomeFunction'

内部异常:InvalidOperationException:未配置存储帐户“存储”。

open = State.objects.get(id=1)
open.isOpen = True
post.save()

app.config:

[Timeout("00:30:00")]
public static async Task SomeFunction([QueueTrigger("queue")] CloudQueueMessage message, CancellationToken cancellationToken)
{
    // do stuff
}

1 个答案:

答案 0 :(得分:6)

1。使用appSettings.json

Microsoft.Azure.WebJobs的版本3不再配置有app.config文件,而是配置了appSettings.json文件。将其放置在应用程序的根目录中,并确保将 appSettings.json 文件的“ 复制到输出目录”属性设置为如果更新则复制< / em>或始终复制,或直接使用 Always PreserveNewest 将其直接添加到.csproj文件中:

<Project ...> 
  ...
  <ItemGroup>
    <None Include="appSettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  ...
</Project>

2。 appSettings.json内容

您的appSettings.json文件应具有存储连接字符串:

开发中

{
  "ConnectionStrings": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  }
}

在生产中

{
  "ConnectionStrings": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=mystorage;AccountKey=key;..."
  }
}

有关在版本3中进行配置的更多信息,请参见this .NET Core 2.1 sample host application。尽管它可能与您使用的.NET Framework有所不同。