出于我无法控制的原因,我被要求根据使用UNC路径的目录结构在网页上呈现一系列图像(类似于图库视图)。您注意到我正在使用相对路径,但我将使用UNC惯例部署该站点。
我创建了以下部分视图来渲染图像,我可以稍后进行格式化。
@model System.Collections.Generic.List<string>
@foreach (var image in Model)
{
<div id="ptImage">
<img src="@image" alt="@Path.GetFileName(image)"/>
</div>
}
上面的@image
表示需要渲染的图像的绝对路径。
页面视图源中显示的路径是我认为我应该期待的,并在本地真正定义图像的位置。通过相对路径访问图像时,这是其他人所期望的吗?
<div id="gImg">
<img src="C:\Projects\Test_Site\Site_1\ES3\ES3_0.bmp" alt="ES3_0.bmp" />
</div>
<div id="gImg">
<img src=" C:\Projects\Test_Site\Site_2\ES4\ES4_0.jpg" alt="ES4_0.jpg" />
</div>
当部分视图加载时,我只看到图像的替代文本,而不是图像本身。查看IIS Express日志会告诉我以下内容:
http://localhost:1348/TestGallery/ 404 0 2 6,This resource让我明白404 0 2 x似乎表明资源尚未找到。
真正成为文件的路径,IIS期望什么作为定位资源的有效输入?我不确定如何对问题进行短语以进行进一步搜索。
答案 0 :(得分:0)
src
代码中的img
路径需要是网站网址,而不是磁盘上的实际文件位置。您的网络应用应转换网址以从适当的位置抓取图片。
一种可能的解决方案:
在您的应用程序RouteConfig.cs
中创建自定义条目,以动态处理特定网址路径上的所有项目。 (在此示例中,它是一个单独的控制器。)
routes.MapRoute(
name: "Images",
url: "image/{*querypath}",
new { controller = "Image", action = "Retrieve" }
);
在处理任意查询路径的代码中,将相对URL(上面的querypath
)转换为您正在查找的UNC路径并提供图像。
return File(UncRootPath + querypath, "image/png");