从 Visual Studio 发布代码时如何将文件上传到 Azure 函数?
How do I upload file to Azure function while publishing the code from Visual Studio?
我创建了一个 Azure Function
,它依赖于 ini
文件。
public class DataProcessingFunction
{
FunctionName("DataProcessingFunction")]
public async Task Run([EventGridTrigger]EventGridEvent eventGridEvent,ILogger log)
{
string iniFolderPath = $@"{Directory.GetCurrentDirectory()}\Ini\";
string iniFileName = "Sample.ini";
var iniConfig = FileManager.ReadFile(iniFolderPath, iniFileName);
}
}
我在将代码发布到 Azure 函数时选择了 Visual Studio 中的 Copy if never
选项
另外,我尝试选择 Embedded Resource
。但是我找不到文件
我遇到异常
File not found.
Azure 门户中的 Add/Upload 选项被禁用,因为我从 Visual studio
发布函数
问题:我是否需要将文件上传到 blob,然后在代码中引用它?
最终结论是文件上传成功,问题是读取路径出错。看来在 Azure 中使用 Directory.GetCurrentDirectory()
并不靠谱。
刚刚试了一下Directory.GetCurrentDirectory()
azure中路径错误(我打印出来显示"D:\Program Files (x86)\SiteExtensions\Functions.0.12961bit"
,这显然不是当前文件夹),最终还是找不到Sample.ini 文件。由于该函数是您自己的,因此您可以将路径设置为类似 "D:\home\site\wwwroot>\Ini\Sample.ini"
的内容。这应该读取 Sample.ini 文件。
方法如下。
ExecutionContext context;
// 您可以修改您的函数方法以采用 ExecutionContext
类型的附加参数
public static async Task Run(<.... Other parameters>, ILogger log, ExecutionContext context)
然后通过组合函数目录构建路径,"templates"是我在与其他代码一起部署的函数应用程序项目中的目录,emails.html是模板中的文件(对于每个这些文件你必须在属性中设置,copy-always 或 copy-if-newer。)。您可以拥有 .ini 文件而不是模板。
string templatePath = Path.Combine(context.FunctionAppDirectory, "Templates", "emails.html");
我创建了一个 Azure Function
,它依赖于 ini
文件。
public class DataProcessingFunction
{
FunctionName("DataProcessingFunction")]
public async Task Run([EventGridTrigger]EventGridEvent eventGridEvent,ILogger log)
{
string iniFolderPath = $@"{Directory.GetCurrentDirectory()}\Ini\";
string iniFileName = "Sample.ini";
var iniConfig = FileManager.ReadFile(iniFolderPath, iniFileName);
}
}
我在将代码发布到 Azure 函数时选择了 Visual Studio 中的 Copy if never
选项
另外,我尝试选择 Embedded Resource
。但是我找不到文件
我遇到异常
Azure 门户中的File not found.
Add/Upload 选项被禁用,因为我从 Visual studio
发布函数问题:我是否需要将文件上传到 blob,然后在代码中引用它?
最终结论是文件上传成功,问题是读取路径出错。看来在 Azure 中使用 Directory.GetCurrentDirectory()
并不靠谱。
刚刚试了一下Directory.GetCurrentDirectory()
azure中路径错误(我打印出来显示"D:\Program Files (x86)\SiteExtensions\Functions.0.12961bit"
,这显然不是当前文件夹),最终还是找不到Sample.ini 文件。由于该函数是您自己的,因此您可以将路径设置为类似 "D:\home\site\wwwroot>\Ini\Sample.ini"
的内容。这应该读取 Sample.ini 文件。
方法如下。
ExecutionContext context;
// 您可以修改您的函数方法以采用 ExecutionContext
public static async Task Run(<.... Other parameters>, ILogger log, ExecutionContext context)
然后通过组合函数目录构建路径,"templates"是我在与其他代码一起部署的函数应用程序项目中的目录,emails.html是模板中的文件(对于每个这些文件你必须在属性中设置,copy-always 或 copy-if-newer。)。您可以拥有 .ini 文件而不是模板。
string templatePath = Path.Combine(context.FunctionAppDirectory, "Templates", "emails.html");