我有一个.Net Core项目。作为数据库上下文类的一部分,我有一些种子数据要插入到数据库中。该种子数据从根目录中的seed.json文件反序列化,并在其中保存图像的路径。这些图像位于项目的文件夹中。在插入数据之前,我获取了这些图像,将它们上传到Azure云存储,然后更改指向其的路径。在本地效果很好。
因此,现在我将应用程序发布到Azure App Service,并出现FileNotFound异常。 它不再可以在项目中找到图像。在Azure的Kudu仪表板上查看文件系统,我没有看到我的项目文件夹,而是一堆.dll和.pdb文件。我只能推测Azure可能会将文件夹捆绑到.dll中?
我仍然可以正常访问wwwroot / images,但是出于安全考虑,不希望这样做。
我该怎么做才能将文件夹发布到他们的文件系统或访问我在他们的文件系统上的文件?
答案 0 :(得分:1)
您可能需要在Program.cs中设置项目工作目录。然后,您可以访问相对于.dll目录的您的文件。
var currentDir = Directory.GetCurrentDirectory();
config.SetBasePath(currentDir)
可能还需要跨seed.json和images文件夹复制到项目的输出:
`<Content Include="seed.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="images/**/*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
`
希望有帮助 戴夫