使用Server.MapPath()生成img src,无法正常工作

时间:2013-06-11 18:48:15

标签: asp.net

这似乎是一个基本问题,但我正在寻找一种正确的方法。我正在显示一系列图像,它们的视图来源如下:

src="@Server.MapPath(Path.Combine("~/App_Data/",photo.ClientId.ToString(),photo.PhotoId.ToString())+photo.FileExt.ToString())"

编译为:

"c:\users\architect\documents\visual studio 2012\Projects\PhotoManagement\PhotoManagement\App_Data\5\62.jpg"

我三重检查文件确实存在于此位置。为什么浏览器拒绝显示此图像?是否有解决方法,以便在我上传代码时代码仍可在服务器上运行。

感谢。

2 个答案:

答案 0 :(得分:2)

APP_Data是一个限制文件夹,用于数据源,例如仅限数据库。 ASP.Net不会在这里提供文件 - 通过直接转到该图像的URL(IE www.mysite/App_Data/5/62.jpg)来尝试它,您将看到错误消息 HTTP Error 403 - Forbidden. < / p>

将您的图片放在此外的文件夹中,您就可以了,例如根目录中的文件夹Images

答案 1 :(得分:1)

Server.MapPath返回服务器上图片的路径。除非客户端的计算机上的完全中的图像恰好相同,否则这将无效。

请尝试使用Url.Content

src="@Url.Content(Path.Combine("~/App_Data/", photo.ClientId.ToString(), photo.PhotoId.ToString()) + photo.FileExt.ToString())"