【发布时间】:2018-12-01 13:55:01
【问题描述】:
我有一个在 Azure 上运行的 ASP.NET Core 应用程序。该应用程序以纯文本和 HTML 格式发送各种电子邮件。我在Resources 文件夹中创建了一个名为EmailTemplates 的子文件夹,用于存储所有HTML 和TXT 模板。一个示例路径可能是:
\src\WebProject\Resources\EmailTemplates\Welcome.html
我通过以下方式访问我的EmailService.cs 类中的文件:
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Resources", "EmailTemplates", "Welcome.html");
var htmlTemplate = await File.ReadAllTextAsync(filePath);
这在 IIS 和 Kestrel 上的本地环境中运行时非常有用。但是,当部署到 Azure 时,我收到一条 IO 错误消息:
System.IO.DirectoryNotFoundException
An unhandled exception has occurred: Could not find a part of the path 'D:\home\site\wwwroot\Resources\EmailTemplates\Welcome.html'.
我在 StackOverflow 上发现了一个类似的问题,但 the answer 已经快 6 岁了。我不确定它是否仍然适用,因为 Azure 在过去几年发生了重大变化。我也在看官方文档(1)(2),但是没有发现Azure有什么特别之处。
在 ASP.NET Core 和 Azure 中存储和检索电子邮件模板(和其他静态文件)的正确方法是什么?
【问题讨论】:
-
你确定你的静态文件是部署的一部分吗? (复制到输出文件夹-> 总是)?本地相对路径“资源”是您项目的一部分吗?
-
原来是这样。拜托,你能写一个答案,让我接受吗?
-
我已经更新了答案
标签: c# azure asp.net-core