你好,我正在 dotnet 核心中将文档导出到 PdF,但文档包含图像图片路径。
var path = Path.Combine(_hostingEnvironment.WebRootPath, "images", "EDSignature.png");
_logger.LogInformation($"EDSignature Image {path}");
//var path = _hostingEnvironment.WebRootFileProvider.GetFileInfo("Images/EDSignature.png")?.PhysicalPath;
var EDSignature = Image.GetInstance(path);
//var EDSignature = Image.GetInstance($"{Directory.GetCurrentDirectory()}{@"\wwwroot\images\EDSignature.png"}");
在 ASP.NET Core 中处理图像时,您需要确保图像的路径在本地开发环境和服务器上都是正确的。您可以检查以下几项:
使用相对路径:指定图片的路径时,使用相对路径而不是绝对路径。这可确保该路径在您的本地环境和服务器上均有效。例如,如果您的图像位于项目根目录中名为“images”的文件夹中,您可以使用这样的相对路径:"~/images/myimage.jpg"
检查文件系统路径:确保图像的文件系统路径在服务器上是正确的。服务器可能具有与本地开发环境不同的文件系统结构,因此请仔细检查图像是否位于正确的文件夹中以及该文件夹是否可访问。
使用IWebHostEnvironment服务:在ASP.NET Core中,您可以使用IWebHostEnvironment服务获取有关托管环境的信息,包括内容根路径。您可以使用此服务来构建图像的正确路径。这是一个例子:
在这个例子中,我们使用Path.Combine方法来构造图像的文件路径。 _env.ContentRootPath 为我们提供了应用程序根目录的路径,我们将路径附加到图像文件夹和图像文件的名称。
通过使用这些技巧,您应该能够正确检索服务器上的图像路径并避免 500 错误。
我测试了一下,将
images
文件夹移动到wwwroot文件夹下解决了问题。如果images
文件夹已经在wwwroot文件夹下,请忽略这一段
另外,你的问题的关键是这个文件夹和文件没有包含在版本中。您可以在 .csproj 文件中添加以下代码。您还需要了解 CopyToOutputDirectory 的选项。
<ItemGroup>
<Content Update="wwwroot\images\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>