我正在尝试创建一个Azure函数,该函数从.mmdb文件GeoLite2 Country DB 中读取
我在函数旁边添加了geolite2文件。但是,我找不到一种以编程方式引用文件路径的方法,使其在本地计算机上以及部署/发布时保持不变。
string GeoLocationDbPath = "D:<path_to_project>FunctionsGeoLocation-Country.mmdb"
var reader = new DatabaseReader($"{GeoLocationDbPath}");
我看到了这篇文章如何将程序集引用添加到Azure Function应用程序
我希望有一种更好的方法来引用本地和部署的文件。
有什么想法吗?
我看过的其他链接:
如何在Azure Function 中添加和引用外部文件
如何添加对Azure Function C#项目的引用?
检索有关当前运行的功能的信息
Azure功能-读取文件并使用SendGrid发送电子邮件
您可以通过向函数注入ExecutionContext
来获得文件夹的路径:
public static HttpResponseMessage Run(HttpRequestMessage req, ExecutionContext context)
{
var funcPath = context.FunctionDirectory; // e.g. d:homesitewwwrootHttpTrigger1
var appPath = context.FunctionAppDirectory; // e.g. d:homesitewwwroot
// ...
}
我得出的结论是,引用Azure函数的本地文件不是一个好方法。我阅读了Azure函数的最佳实践,Azure函数是无状态的。此外,部署时文件夹结构也会发生变化。
如果继续,我会将.mmdb文件上传到Azure blob容器,并使用CloudStorageAccount访问该文件。