Azure功能:如何观看Dropbox或OneDrive文件夹并同步ftp位置

时间:2016-07-26 05:34:32

标签: c# powershell azure-webjobssdk azure-deployment azure-functions

我需要获取Dropbox文件夹/一个驱动器监视,并且任何文件更新或更改都会被FTP输出。为了熟悉我尝试了

共享的C#代码

但是我收到以下错误消息: - Process a file using Azure Function ======更新我使用的C#代码======

我的run.csx如下: 使用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": "{name}",
  "connection": "googledrive_GOOGLEDRIVE"
}
  ],
"disabled": false
    }

路径被修改,因为我收到以下错误:

  

主机错误:Microsoft.Azure.WebJobs.Extensions.ApiHub:路径'input-cs'无效。必须将IFolderItem.RootPath设置为有效的目录位置。

我玩了,并删除了上面的function.json中的'input-cs'和'output-cs',上面的错误消失了,编译成功了但是再次在日志中我找不到它。日志如下:

  

2016-07-25T12:52:07.957功能'SaasFileTriggerCSharp1'的脚本已更改。装载。

     

2016-07-25T12:52:07.957编译功能脚本。

     

2016-07-25T12:52:08.020编译成功。

     

2016-07-25T12:52:29.137执行函数时出现异常:Functions.SaasFileTriggerCSharp1。 Microsoft.Azure.WebJobs.Host:发生了一个或多个错误。异常绑定参数'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。

尝试使用C#和Node.js Saasfiletriggers以及相同的异常。以下是调用日志:

=============================================== ===================== 失败:异常绑定参数'input'

输入:/ apim / dropbox / 8b82684e13e44f499752a742adc4d30d / datasets / default / GetFileContentByPath?path =%7B%0A%20%22name%22%20:%20%22%22%0A%7D

  

ilerServices.TaskAwaiter.ValidateEnd(任务任务)      在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()   ---从抛出异常的先前位置开始的堆栈跟踪结束---      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在Microsoft.Azure.WebJobs.Host.Triggers.TriggeredFunctionBinding`1.d__7.MoveNext()      ---内部异常堆栈跟踪结束---      在Microsoft.Azure.WebJobs.Host.Executors.DelayedException.Throw()      在Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__33.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束---      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__2e.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束---      在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)      在System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)      在Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__15.MoveNext()      ---内部异常堆栈跟踪结束---

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

是否有任何我可以阅读或提及的样本以适应我的需要。请求建议和帮助。

1 个答案:

答案 0 :(得分:0)

如果要写入googledrive的根文件夹,则路径应为“/ {name}”并带正斜杠。

在下面的示例中,输出文件夹是'docsoutput'。如果输出文件夹不存在,它将在函数运行时创建。

如果以下示例不适合您,请同时粘贴您的C#功能代码。还要确保使用最新版本的函数运行时。

使用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
    }