2017-03-20 1 views
0

Ich habe einen WebJob:WebJob Zugriff auf falsche Behälter

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

Die AzureWebJobsDashboard und AzureWebJobsStorage Verbindungszeichenfolgen zu Azure Punkt, aber ich bin lokal im Debug-Modus ausgeführt wird.

In der Vergangenheit wurde der Blob-Trigger eingerichtet, um gegen "foo/Raw/{BlobName}" und "foo2/Raw/{BlobName}" zu arbeiten, aber ich habe seitdem einen sauberen Build und löschte die Bin und Obj Verzeichnisse. Trotzdem sehe ich immer noch, dass der WebJob neben dem neuen Container auf die alten Container zugreift.

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 --- 

Warum es nicht halten den Zugriff auf die alten Container und wie verhindere ich es: Im unten, werden Sie für foobar einrichten trotz der Funktion zugegriffen foo und foo2 Container werden wird sehen, dass?

UPDATE Ich habe dies mit einem neuen WebJob-Projekt neu erstellt. Hier ist, was ich getan habe:

  1. Verwenden Azure Storage Explorer
  2. Run Hunderte von Dateien zu Container „foo“ hinzufügen die WebJob (es braucht nichts zu tun)
  3. Nach ein paar Dutzend Blobs sind stoppen verarbeitet, die WebJob
  4. ändern der Containername in der Blob-Trigger (wie „fooed“ oder „ABCDE“)
  5. Führen Sie das WebJob
  6. an dieser Stelle Fehler auftreten können, wenn nicht, halten zurück~~POS=TRUNC und zwischen "foo" und "fooed" bis du es tust.

Antwort

0

Ausführen 'StandardizeFileFunction.StandardizeFile' (Grund = 'New erkannt Blob: foo/Raw/Studie/062014.txt', Id = 98c90b27-b1b4-464a-898c-8d9137c564a1)

Öffentlichkeit statische async Aufgabe StandardizeFile ([BlobTrigger ("foobar/Raw/{blobName}")] Stream-Eingang, string blobName)

Ihre Beschreibung und Fehlermeldung nach, fand ich in der Fehlermeldung ist Ihre Funktion, ausgelöst durch Blob Container "foo/foo2".

Aber Ihr Code wird durch Blob Container "Foobar" ausgelöst.

Ich denke, vielleicht stimmt etwas nicht mit Ihren Lösungsprojekten.

Ich schlage vor, Sie könnten einen neuen Webjob starten und es erneut versuchen. Stellen Sie sicher, dass Sie das richtige Projekt gestartet haben.

+0

Warum sollte es von "foo/foo2" ausgelöst werden, wenn der Blob-Trigger auf "foobar/Raw" gesetzt ist? –

+0

AFAIK, bevor das Web-Job-Programm ausgeführt wird, erstellt das VS das Projekt nach Ihrem Code. Wenn Ihr Code geändert wird, wird das Ergebnis geändert. Da wir Ihren Code nicht haben, konnten wir Ihren Fehler nicht reproduzieren. Ich schlage vor, Sie könnten mehr Details über Ihr Webjob-Projekt und den FunctionBase-Klassencode posten. Wenn möglich, könnten Sie Ihr gesamtes Webjob-Projekt auf dem Onedrive teilen. Ich werde es auf meinem Computer testen. Dies wird uns helfen, Ihr Problem zu reproduzieren und die Lösung zu finden. –

+0

Ich konnte die Fehler in einem neuen WebJobs-Projekt erhalten. Ich habe das Q mit einer Repro aktualisiert. –

Verwandte Themen