如何在 .NET Core 应用程序中显示存储在虚拟目录中的图像?

How to display images stored in a virtual directory in .NET Core app?

我想在我的 .net 核心网站上显示图像。图片存储在 IIS 服务器上的网站文件夹之外。

在 Internet 上,我了解到一种方法是使用我随后设置的虚拟目录。下面配置虚拟目录:

本来以为可以很方便的访问文件夹里面保存的图片,虚拟目录指向,结果一直没成功

在我的 html 中,我尝试了以下操作:

<img src="/Uploads/image.jpg" />

<img src="Uploads/image.jpg" />

<img src="../Uploads/image.jpg" />

<img src="./Uploads/image.jpg" />

但没有任何效果。 检查网站时,图片出现 404 错误。

更新: 我为 IUSR 和 IIS_IUSRS

添加了对虚拟目录(完全访问)的权限

更新:看来我无法按照此博客从 .net 核心 Web 应用程序访问虚拟目录 post:https://www.jauernig-it.de/asp-net-coreiis-serving-content-from-a-file-share/

相反,作者建议在 Startup.cs 中使用 UseFileServer()。但是,我还不确定如何将图像上传到文件服务器并显示它们。

尝试将图片路径设置如下。

<img src="./test/1.jpg"/>

检查您是否授予图像文件夹正确的权限。

此致, 贾尔帕

所以事实证明您不能在 ASP.NET 核心 Web 应用程序中使用虚拟目录(根据此博客 post,例如:https://www.jauernig-it.de/asp-net-coreiis-serving-content-from-a-file-share/)。 您不必配置指向服务器上某个文件夹的虚拟目录,而是必须将以下代码添加到 Startup.cs 中的 Configure():

app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(@"\server\path"),
RequestPath = new PathString("/MyPath"),
EnableDirectoryBrowsing = false
});

例如,如果路径指向包含图像 image.jpg 的文件夹,您可以像这样使用代码中的图像:

<img src="/MyPath/image.jpg" />

Configure 方法中,应用以下代码。

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(env.ContentRootPath, "uploads")),
    RequestPath = "/uploads"
});