从ASP.NET应用程序外部显示图像

所以我在显示项目文件夹外部的图像时遇到了一些麻烦……

我似乎只能访问“〜”目录和子目录中的图像…

比如,如果我想访问“E:/ XYZ / 11-01-01新年/”之类的图像或类似的东西我该怎么办?

注意:我将所有文件夹和子文件夹的权限设置为“可读”为“Everyone”,因此IIS / Visual Studio应该能够但不显示图像控件中的图像

您应该使用HttpHandler来显示图像。

谷歌搜索“httphandler图像”出现了许多关于如何做到这一点的例子。

您可以使用查询字符串链接到处理程序,而不是尝试直接链接到您的图像,以确定要显示的图像。 例如

 http://mysite.com/MyHandler.ashx?image=myimage.jpg 

这是一个非常基本的样本(减去error handling等)

 using System.IO; using System.Web; public class MyImageHandler : IHttpHandler { public void ProcessRequest(System.Web.HttpContext ctx) { string _Path; _Path = "E:\\XYZ\\11-01-01 New Year\\" + context.Request.QueryString["image"]; ctx.Response.StatusCode = 200; ctx.Response.ContentType = "image/jpeg"; ctx.Response.WriteFile(_Path); } public bool IsReusable { get {return true; } } } 

除非您将虚拟目录映射到图像,否则客户端浏览器永远不会知道这些图像的位置。 在您的本地测试环境中,您可以通过将图像引用为“ file:///E:/XYZ/11-01-01 New Year/myimage.jpg ”来解决此问题,但这是非常糟糕的做法,并且永远不会有效在生产环境中。 您应该始终在应用程序的工作目录中使用相对路径,或者在其他位置使用静态定义的虚拟目录。