2

Je dois obtenir un dossier Dropbox/une montre de lecteur, et toute mise à jour de fichier ou de changement obtient FTP'd à la sortie. Pour se familiariser avec j'ai essayé code C# partagée parAzure Fonctions: comment regarder un dossier Dropbox ou OneDrive et synchroniser un emplacement ftp

mais je reçois le message d'erreur suivant: - Process a file using Azure Function ====== Mise à jour du code C# que je l'ai utilisé ======

Ma course .csx est comme ci-dessous: using System;

public static void Run(string input, out string output, TraceWriter log) 
{ 
    log.Info($"C# SaaS trigger function processed a file!!"); 

output = input; 
} 

==========================

Mon function.json est comme ci-dessous:

{ 
    "bindings": [ 
{ 
    "type": "apiHubFileTrigger", 
    "name": "input", 
    "direction": "in", 
    "path": "/Docs/{name}", 
    "connection": "dropbox_DROPBOX" 
}, 
{ 
    "type": "apiHubFile", 
    "name": "output", 
    "direction": "out", 
    "path": "{name}", 
    "connection": "googledrive_GOOGLEDRIVE" 
} 
    ], 
"disabled": false 
    } 

où les chemins sont modifiés parce que je recevais l'erreur ci-dessous:

Host Error: Microsoft.Azure.WebJobs.Extensions.ApiHub: Path 'input-cs' is invalid. IFolderItem.RootPath must be set to a valid directory location.

J'ai joué et supprimé la « entrée-cs » et « sortie-cs » dans mon function.json ci-dessus, l'erreur ci-dessus va loin et la compilation est réussie, mais encore une fois dans les journaux, je ne le trouve pas approprié. Connexion est comme ci-dessous:

2016-07-25T12:52:07.957 Script for function 'SaasFileTriggerCSharp1' changed. Reloading.

2016-07-25T12:52:07.957 Compiling function script.

2016-07-25T12:52:08.020 Compilation succeeded.

2016-07-25T12:52:29.137 Exception while executing function: Functions.SaasFileTriggerCSharp1. Microsoft.Azure.WebJobs.Host: One or more errors occurred. Exception binding parameter 'input'. Microsoft.Azure.ApiHub.Sdk: /apim/dropbox/8b82684e13e44f499752a742adc4d30d/datasets/default/GetFileContentByPath?path=%7B%0A%20%20%20%20%22name%22:%20%22IMG-20140517-WA0001.jpg%22%0A%7D.

essayées avec C# et Node.js Saasfiletriggers et même exception. Voici le journal d'appel:

======================================== ============================ Failure: Exception 'entrée' paramètre de liaison

entrée :/APIM/dropbox/8b82684e13e44f499752a742adc4d30d/ensembles de données/default/GetFileContentByPath path =% 7B% 0A% 20% 22name% 22% 20:% 20% 22% 22% 0A% 7D

ilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.Azure.WebJobs.Extensions.ApiHub.Common.GenericFileBinding 2.<BindAsync>d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.WebJobs.Extensions.ApiHub.Common.GenericFileTriggerBindingProvider 2.GenericTriggerbinding.d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.WebJobs.Host.Triggers.TriggeredFunctionBinding`1.d__7.MoveNext() --- End of inner exception stack trace --- at Microsoft.Azure.WebJobs.Host.Executors.DelayedException.Throw() at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__33.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__2e.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__15.MoveNext() --- End of inner exception stack trace ---

======== ============================================= ==========

Serait-il des échantillons que je pourrais lire ou référer pour s'adapter à mes besoins. Demander des suggestions et de l'aide.

Répondre

0

Si vous voulez écrire dans le dossier racine de googledrive, le chemin doit être "/ {nom}" avec une barre oblique.

Dans l'exemple ci-dessous, le dossier de sortie est 'docsoutput'. Si le dossier de sortie n'existe pas, il sera créé lors de l'exécution de la fonction.

Si l'exemple ci-dessous ne vous convient pas, collez également votre code de fonction C#. assurez-vous également que vous utilisez la dernière version des fonctions runtime.

en utilisant System;

public static void Run(string input, out string output, TraceWriter log) 
{ 
    log.Info($"C# SaaS trigger function processed a file!!"); 

    output = input; 
} 

function.json:

{ 
     "bindings": [ 
    { 
     "type": "apiHubFileTrigger", 
     "name": "input", 
     "direction": "in", 
     "path": "Docs/{name}", 
     "connection": "dropbox_DROPBOX" 
    }, 
    { 
     "type": "apiHubFile", 
     "name": "output", 
     "direction": "out", 
     "path": "docsoutput/{name}", 
     "connection": "googledrive_GOOGLEDRIVE" 
    } 
     ], 
    "disabled": false 
    } 
+0

Merci pour la réponse. Aujourd'hui, j'ai été invité à mettre à jour la fonction runtime de 0.3 à 0.4 et maintenant la version est 0.4 **. Maintenant, obtenez l'erreur suivante: 'entrée \t/apim/dropbox/4c60dc53f902472fb59704d1f0dc7f2f/datasets/default/GetFileContentByPath? Path =% 7B% 0A% 22nom% 22% 20:% 20% 22FB_IMG_1468342110321.jpg% 22% 20% 0A% 7D Sortie \t Aucune valeur pour le paramètre nommé 'name'.' –

+0

En outre, j'ai joué avec le concepteur d'applications logiques pour connaître la connexion et le code du dropbox. Fait intéressant, le dossier du nom "Docs" vient dans le modèle en tant que "docs". Veuillez trouver mon message principal mis à jour avec le code aussi. –

+0

Ok, dans le scénario ci-dessus, vous cliquez sur le bouton "Exécuter" du portail plutôt que de copier un fichier dans le dossier "docs" de votre compte "Envoi sécurisé". Pour que le scénario 'Exécuter' fonctionne, vous devez avoir quelque chose comme ça dans la boîte de dialogue de la requête: docs/readme.md (en supposant que vous ayez un fichier nommé readme.md) ressemble à un bogue dans le template copie le contenu json dans cette boîte par défaut. nous allons le réparer bientôt. –