Azure Function 3.1 如何将其他项目引用文件纳入部署包
解决Azure Function部署后静态文件丢失的方案
方案1:修改文件的复制属性
- 找到项目中
Files/paid_watermark.png文件,右键选择「属性」 - 将「复制到输出目录」选项修改为如果较新则复制或者始终复制
- 保存后重新生成项目,检查.csproj文件中是否已经生成如下配置:
<ItemGroup> <!-- 单个文件配置 --> <Content Include="Files\paid_watermark.png"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> <!-- 如果要保留整个Files文件夹下的所有文件,直接按下面的写法 --> <Content Include="Files\**\*.*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </Content> </ItemGroup>
方案2:检查发布过滤规则
- 如果是Node.js/Python等非.NET语言的Azure Function项目,打开项目根目录的
.funcignore文件,确认没有把Files/文件夹列入忽略列表 - 避免发布过程中自动删除该目录下的文件
方案3:修正运行时的路径引用逻辑
部署后不能直接用相对路径访问文件,需要先获取Function App的根目录再拼接路径,C#代码示例:
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ExecutionContext context, ILogger log) { // 拼接得到正确的文件路径 string watermarkPath = Path.Combine(context.FunctionAppDirectory, "Files", "paid_watermark.png"); // 后续读取文件的逻辑 }
你提供的相关示意图:
内容的提问来源于stack exchange,提问作者Alex D
相关产品推荐
相关产品推荐

