ImageUrl试图在项目根目录之外显示图像

时间:2010-01-05 22:23:24

标签: asp.net server.mappath

我正在使用asp.net中的两个不同的网站。在第一个项目中,我将一些图像上传到项目根目录下的特定文件夹,只保存数据库中的文件名,现在我试图在第二个项目的某个页面显示这些图像我知道数据库中的文件名和图像文件夹作为绝对拍,但我无法显示图像,甚至认为在查看firebug时图像src是正确的src="D:/MyFolder/image.jpg"图像不显示,可能是因为它没有指向正确的目录。 我也尝试过使用Server.MapPath然后使用我的D位置,但仍然没有成功。

我确信之前有人遇到过同样的情况,并且真的希望得到一些暗示来管理这个问题。 提前谢谢

4 个答案:

答案 0 :(得分:2)

我找到了我的解决方案,奇怪但我之前没有抓住它。项目下的图片总是可以使用项目的网址http://www.yourwebsite.com/images/photo.png进行访问,现在您可以使用第二个项目使用此网址引用图像并连接我存储在数据库中的文件名。我认为这是最好的解决方案,并且不会改变代码访问安全性,我认为可以带来其他问题。无论如何,谢谢你们。

答案 1 :(得分:1)

默认情况下,我认为您不能在应用程序路径之外提供文件。它被称为代码访问安全性。你可以在这里阅读:
http://msdn.microsoft.com/en-us/library/930b76w0.aspx

您可以通过在web.config中将信任级别更改为“高”来解决此问题 http://msdn.microsoft.com/en-us/library/tkscy493.aspx

我不建议对任何可从外部访问的网站执行此操作。实际上,根据您托管应用程序的方式/位置,此选项可能会受到限制。

答案 2 :(得分:1)

您只能“链接”到相对于同一项目存在的文件或通过绝对URL托管在其他网站上的文件。

如果要为应用程序/网站之外的文件(在磁盘或数据库中)提供服务,则需要构建一种机制,将文件和二进制文件写入浏览器,设置MIME类型等。这是最好的使用HttpHandler完成。

答案 3 :(得分:1)

如果要显示项目中没有的图像(我的意思是它存在于某个其他项目或其他驱动器中),只需在IIS中创建虚拟目录

  1. 转到“运行”,键入inetmgr
  2. 右键单击您的项目并添加虚拟目录
  3. 提供别名和路径,使其在项目中像文件夹一样