ASP.NET无法显示图像

时间:2016-10-20 20:24:08

标签: c# asp.net-mvc iis-6 unc

出于我无法控制的原因,我被要求根据使用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期望什么作为定位资源的有效输入?我不确定如何对问题进行短语以进行进一步搜索。

1 个答案:

答案 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");