在Azure函数中存储文件的位置在哪里?

10

我有一些文件,我通过C#代码从内部引用,例如:

public static string Canonical()
{
    return File.ReadAllText(@"C:\\myapp\\" + "CanonicalMessage.xml");
}

我该如何在Azure函数内引用这个文件?

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var data = File.ReadAllText(@"c:\\myapp\\" + "CanonicalMessage.xml");

    //etc
}

也许我可以直接将这个资源嵌入到项目中?

1个回答

12

是的,在Azure Function项目的根目录中放置文件,并将其属性设置为复制到输出目录,设置为如果较新则复制。使用以下代码。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log, ExecutionContext context)
{
    var data = File.ReadAllText(context.FunctionAppDirectory+"/CanonicalMessage.xml");

    //etc
}

查看文档以获取更多详细信息。

如果我们需要从本地任何位置添加此文件,请右键单击功能项目,编辑 <FunctionProjectName>.csproj。添加下面的项,相对路径或绝对路径都可以。

<ItemGroup>
  <None Include="c:\\myapp\\CanonicalMessage.xml">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup> 

只要我将属性设置为“复制到输出目录”,放在哪个项目中似乎并不重要?只要它存在于解决方案中的某个项目或文件夹中,我可以将其放置在任何项目中吗? - Alex Gordon
@l--''''''---------'''''''''''' 我们可以把它放在任何地方,只要确保在项目构建时将其复制到函数输出目录中。请查看我的更新。 - Jerry Liu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接