我在Visual Studio中发布我的azure函数时包含一个文件

use*_*050 18 c# azure visual-studio azure-functions

我知道这似乎很简单但我在网上找不到任何帮助.

当我使用Visual Studio发布它时,我想要包含一个文件(.html)和我的azure函数.然后我希望能够在Azure功能中访问此文件.为什么?我发布时似乎只有.dll被发送到服务器.

此文件将是一个.html文件,它将是一个电子邮件模板.我想在我的功能中阅读它,然后发送电子邮件.

任何帮助深表感谢.

我看到我可以使用[在Azure功能中发送网格] [1],但看起来我只能发送一封电子邮件而不是多封电子邮件,这就是我想要的.

Dav*_*bbo 33

首先,您需要将html文件添加到项目中,并在属性中将Copy to Output Directory设置为"Copy if newer".

然后在你的功能代码,采取额外的ExecutionContext context参数(注意,这是Microsoft.Azure.WebJobs.ExecutionContext不是 System.Threading.ExecutionContext).当你需要访问你的html文件时,你可以写:

string htmlFilePath = Path.Combine(context.FunctionAppDirectory, "test.html");
Run Code Online (Sandbox Code Playgroud)

假设您在VS项目的根目录中添加了该文件.如果你把它添加到某个Data文件夹(更好的练习),你会写:

string htmlFilePath = Path.Combine(context.FunctionAppDirectory, "Data", "test.html");
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解完整的工作样本

  • 惊人的答案,花了几个小时寻找这个解决方案。 (2认同)
  • 有用的回答谢谢.如果您的帮助程序函数位于主Azure Function类之外,那么可能会有一些有用的注释:您需要键入`Microsoft.Azure.WebJobs.ExecutionContext`而不是`System.Threading.ExecutionContext`.此外,如果您还没有在Azure函数定义中使用`context`,请执行以下操作:`public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Function,"get","post",Route) = null)] HttpRequest req,ILogger log,ExecutionContext context)` (2认同)
  • 文档链接 https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function (2认同)
  • fyi-我正在IWebJobsStartup类(无法访问ExecutionContext AFAIK)内进行依赖项注入,并且想加载自定义json配置,因此为我获取工作本地路径的最简单方法是通过操纵Assembly.GetExecutingAssembly()。地点 (2认同)