0

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

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"

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

谢谢。

4

2 回答 2

2

APP_Data是一个受限制的文件夹,仅适用于数据库等数据源。ASP.Net 不会在此处传递文件 - 通过直接转到该图像的 URL (IE www.mysite/App_Data/5/62.jpg) 尝试它,您将看到错误消息HTTP Error 403 - Forbidden.

将您的图像放在此之外的文件夹中,您会没事的,例如根目录中的文件夹Images

于 2013-06-11T18:50:16.907 回答
1

Server.MapPath返回服务器上图像的路径。除非客户碰巧在他们的计算机上具有完全相同的路径中的图像,否则这将不起作用。

尝试Url.Content改用:

src="@Url.Content(Path.Combine("~/App_Data/", photo.ClientId.ToString(), photo.PhotoId.ToString()) + photo.FileExt.ToString())"
于 2013-06-11T19:30:35.910 回答