【问题标题】:How do I display an image on a webpage from a network location? [closed]如何从网络位置在网页上显示图像? [关闭]
【发布时间】:2013-09-03 14:52:43
【问题描述】:

我有一个内部使用的网络应用程序,它指向网络驱动器上的图像。

当我在 VS 中测试它时它可以工作,但图像一旦发布就不会加载。

我确定这是 IIS 中的一个设置,但我不知道它是什么。

每台计算机都已经登录到域中,应该允许有权访问的人查看图像。

我尝试将身份验证更改为模拟,但没有成功。

有什么想法吗? 谢谢

【问题讨论】:

  • 如果您在代码/标记中显示其中一个图像的示例,然后显示从 VS 运行以及从已发布站点运行时呈现的 HTML 的外观,将会很有帮助。查看两者之间的差异可能会澄清问题所在。
  • 只是一个图片标签<img src="//network-share/image.jpg" /> 没什么特别的。它不是服务器控件,因此标签的呈现不会改变。
  • 那么这正是它在您的 ASPX 页面和浏览器的“查看源代码”(本地和发布)中的样子?它在不同浏览器中的行为是否不同?
  • 是的,它是一个 html 标签。除非它显示 runat=server,否则标签呈现完全相同。
  • 这个问题似乎离题了,因为它应该在网站管理员 stackexchange 上回答。

标签: asp.net iis iis-7.5


【解决方案1】:

我最终通过更改图像的加载方式解决了这个问题。我没有使用网络路径作为 src,而是改用通用处理程序来渲染图像。

所以,现在图像标签看起来像

<img alt="Item Image" src="/ImageHandler.ashx?f=100" />

并且图像通过以下代码加载到处理程序中。

public void ProcessRequest(HttpContext context)
{
    var f = Convert.ToString(context.Request.QueryString.Get("f"));
    var path = string.Format("//network-share/images/{0}.jpg", f);
    var image = Image.FromFile(path);
    context.Response.Clear();
    context.Response.ClearHeaders();
    image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
    context.Response.ContentType = "image/jpeg";
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

虽然我仍然想弄清楚权限问题,但这是一个更好的整体解决方案。由于指向文件位置似乎存在跨浏览器兼容性问题,而您不会在这里遇到。

【讨论】:

  • 您是否尝试在我的回答中启用该选项?
  • 还没有,但我一定会尝试,如果有效,我会在另一个帖子中将其标记为已回答。
  • 谢谢 - 也请查看链接问题中接受的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2011-02-26
  • 2022-01-19
  • 2020-03-26
  • 1970-01-01
相关资源
最近更新 更多