我是ASP.NET的新手。我正在使用ASP.NET 3.5(VS 2008)开发一个站点,我想要做的就是:
当用户调用一个页面时,比如说,Index.aspx?id = 10,然后我去一个表,拉出id = 10的相关行,其中一个单元格中有图像[ ]格式
我现在想在网页上显示此图片,其中包含其他内容。
我似乎无法弄清楚如何执行此操作 - 图像控件只需要一个URL,我不想将图像保存在磁盘上。
有什么想法吗?
-Rick
答案 0 :(得分:2)
您需要创建一个实现IHttpHandler接口的类。这样的事情就足够了:
public class ImageHttpHandler : IHttpHandler
{
//code omitted
public bool IsReusable
{
get
{
return (false);
}
}
public void ProcessRequest(HttpContext context)
{
//GetImageUrl is implemented elsewhere
var imageURL = GetImageUrl(context.Request.Params["URL"]);
//GetImageContentFromDatabase returns a structure with MIMEType and Content properties
var imageData = GetImageContentFromDatabase(imageURL);
if(imageData != null)
{
context.Response.ContentType = imageData.MIMEType;
context.Response.BinaryWrite(imageData.Content);
}
else
{
context.Response.StatusCode = 404;
}
}
}
您可以将此类放在App_Code目录中,或者,如果要概括此行为,则可以将其放在单独的程序集中。
然后,您可以在web.config文件中引用此处理程序,如下所示:
<system.web>
<httpHandlers>
<add verb="GET" path="*.imgx" type="ImageHttpHandler"/>
</httpHandlers>
</system.web>
这意味着对扩展名为imgx的文件的所有get请求都应该定向到ImageHttpHandler类。
这适用于Cassini(Visual Studio开发Web服务器),但您需要对IIS网站/虚拟目录进行其他更改。
转到IIS MMC管理单元并访问此目录的属性。您需要找到位于“虚拟目录”或“主目录”选项卡中的“配置”按钮。在那里,添加imgx作为应用程序扩展,将可执行文件设置为aspnet_isapi.dll。它位于我的机器上,位于C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727。为简单起见,请选择“所有动词”,然后取消选中“验证文件是否存在。”
您在网页中定义的超链接应使用imgx扩展名。根据您的需要,您可以将链接定义为“myimage.imgx”或“GetImage.imgx?id = XXX”。这取决于您的需求以及您打算如何从数据库中检索图像内容。
答案 1 :(得分:0)