我创建了一个 WebJob,用于在创建 Azure 文件时读取文件。
当我在本地运行它时,它可以工作,但当我发布 WebJob 时,它不能工作。
我的 Main() 函数是:
static void Main()
{
string connection = "DefaultEndpointsProtocol=https;AccountName=MYACCOUNTNAME;AccountKey=MYACCOUNTKEY";
JobHostConfiguration config = new JobHostConfiguration(connection);
var filesConfig = new FilesConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
filesConfig.RootPath = @"c:\temp\files";
}
config.UseFiles(filesConfig);
var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
创建文件时触发的函数为:
public void TriggerTest([FileTrigger(@"clients\{name}", "*.txt", WatcherChangeTypes.Created)] Stream file, string name, TextWriter log)
{
log.WriteLine(name + " received!");
// ...
}
发布 WebJob 时出现的错误是:
[08/17/2016 00:15:31 > 4df213: ERR ] Unhandled Exception: System.InvalidOperationException: Path 'D:\home\data\clients' does not exist.
这个想法是让 WebJob 在 Azure 文件的“clients”文件夹中创建新文件时触发。
有人能帮我吗?
根据您的要求,我在我这边测试了一下,然后重现了您的问题。
未处理的异常:System.InvalidOperationException:路径“D:\home\data\clients”不存在
发布 WebJob 时,在 Azure Web App 中运行时,FilesConfiguration.RootPath 将设置为“D:\HOME\DATA”目录。你可以参考源码:https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/WebJobs.Extensions/Extensions/Files/Config/FilesConfiguration.cs https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/WebJobs.Extensions/Extensions/Files/Config/FilesConfiguration.cs
正如以下教程提到的,FilesConfiguration.RootPath 应设置为有效目录。https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1 https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1请检查并确保指定的目录存在于您的Web作业托管的Web应用程序中。
通过 WebJob 在 Azure 文件的“客户端”文件夹中创建新文件时触发
据我所知,Azure存储有两个触发器:
- QueueTrigger - 当 Azure 队列消息排队时。
- BlobTrigger – 上传 Azure Blob 时。
新的WebJobs SDK提供了一个文件触发器,可以根据文件事件触发函数。
但是,文件触发器可以监视特定目录的文件添加/更改,但 Azure 文件存储上似乎没有用于监视文件添加/更改的触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)