WebJob访问错误的容器

时间:2017-03-20 18:43:24

标签: azure azure-webjobs

我有一个WebJob:

public class StandardizeFileFunction : FunctionBase
{
    public static async Task StandardizeFile([BlobTrigger("foobar/Raw/{blobName}")] Stream input, string blobName)
    { ... }
}

AzureWebJobsDashboard和AzureWebJobsStorage连接字符串指向Azure,但我在调试模式下本地运行。

过去,blob触发器设置为对抗" foo / Raw / {blobName}"和" foo2 / Raw / {blobName}",但我已经完成了一个干净的构建并删除了bin和obj目录。即便如此,除了新容器之外,我仍然看到WebJob访问旧容器。在下面,尽管为foobar设置了函数,你仍然可以看到容器foo和foo2被访问:

StandardizeFileFunction.StandardizeFile
Job host started
Executing 'StandardizeFileFunction.StandardizeFile' (Reason='New blob detected: foo/Raw/Study/062014.txt', Id=98c90b27-b1b4-464a-898c-8d9137c564a1)
Exception while executing function: StandardizeFileFunction.StandardizeFile
Executing 'StandardizeFileFunction.StandardizeFile' (Reason='New blob detected: foo2/Raw/Study/Temperature/HF732 1310-Room-3.txt', Id=90060f17-9a6f-47f2-a09d-b39784f5152f)
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: StandardizeFileFunction.StandardizeFile ---> System.InvalidOperationException: Exception binding parameter 'blobName' ---> System.InvalidOperationException: Binding data does not contain expected value 'blobName'.
   at Microsoft.Azure.WebJobs.Host.Bindings.Data.ClassDataBinding`1.BindAsync(BindingContext context)
   at Microsoft.Azure.WebJobs.Host.Triggers.TriggeredFunctionBinding`1.<BindCoreAsync>d__8.MoveNext()
   --- End of inner exception stack trace ---

为什么它会继续访问旧容器以及如何阻止它?

更新 我用一个新的WebJob项目重新编写了这个。这就是我的所作所为:

  1. 使用Azure存储资源管理器将数百个文件添加到容器&#34; foo&#34;
  2. 运行WebJob(它不需要做任何事情)
  3. 处理了几十个blob后,停止WebJob
  4. 更改blob触发器中的容器名称(例如&#34; fooed&#34;或&#34; abcde&#34;)
  5. 运行WebJob
  6. 此时您可能会看到错误,如果没有,请继续在&#34; foo&#34;之间来回切换。并且&#34; fooed&#34;直到你这样做。

1 个答案:

答案 0 :(得分:0)

  

执行'StandardizeFileFunction.StandardizeFile'(Reason ='检测到新blob:foo / Raw / Study / 062014.txt',Id = 98c90b27-b1b4-464a-898c-8d9137c564a1)

     

public static async Task StandardizeFile([BlobTrigger(“foobar / Raw / {blobName}”)]流输入,字符串blobName)

根据您的描述和错误消息,我在您的错误消息中发现您的功能是由blob容器“foo / foo2”触发的。

但你的代码是由blob容器“foobar”触发的。

我认为你的解决方案项目可能有问题。

我建议你可以开始新的webjob并再试一次。确保你已经开始了正确的项目。