我有一个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项目重新编写了这个。这就是我的所作所为:
答案 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并再试一次。确保你已经开始了正确的项目。