我有Azure Function项目.NET Core 2.2 我为功能添加了具有不同配置的config.json文件,并设置了“始终复制”选项。对于我的本地项目来说效果很好。
但是在发布到Azure之后不起作用:
找不到配置文件'config.json',没有找到 可选的。物理路径为“ D:\ Windows \ system32 \ config.json”。
我在函数内部使用了它:
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("config.json")
.Build();
IDomainActions domainActions = new DomainActions(config);
为什么如此,怎么了?
答案 0 :(得分:2)
问题是因为当我们在本地启动Azure Function时,Directory.GetCurrentDirectory()
可以使用文件config.json,但是在Azure门户上发布的文件是Directory.GetCurrentDirectory() + @"\site\wwwroot"
要找到统一的方法,我可以通过以下方式做到这一点:
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("config.json")
.Build();
其中context
是输入参数:
public async static Task Run(
[QueueTrigger("domain-registation", Connection = "StorageConnectionString")]DomainForRegistration queueItem,
ExecutionContext context,
ILogger log)
谢谢尼古拉斯的提示