我需要获取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%7DilerServices.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() ---内部异常堆栈跟踪结束---
=============================================== =====================
是否有任何我可以阅读或提及的样本以适应我的需要。请求建议和帮助。
答案 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
}