2
我有一个处理程序,它提供来自外部网站的图像。这个工作绝对很好。图片src不显示由处理程序提供的外部图像
但是,当我在图像src属性中使用处理程序它不起作用。
这是调用我作出了处理:
<img src="myhandler.ashx?image=http://nssdc.gsfc.nasa.gov/image/planetary/venus/gal_venus_37218.jpg"/>
这是处理程序的代码:
using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Drawing;
using System.Net;
using System.IO;
using System.Drawing.Imaging;
namespace MumsChoice.Portal.UI.Handlers
{
/// <summary>
/// Summary description for $codebehindclassname$
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ExternalImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Bitmap bitOutput = null;
Stream stream = null;
string contentType = string.Empty;
try
{
WebRequest req = WebRequest.Create(context.Request.QueryString["image"]);
WebResponse response = req.GetResponse();
contentType = response.ContentType;
stream = response.GetResponseStream();
bitOutput = new Bitmap(stream);
}
catch
{
bitOutput.Dispose();
}
finally
{
stream.Close();
stream.Dispose();
stream = null;
}
ImageFormat format;
switch (contentType)
{
case "image/png":
format = ImageFormat.Png;
break;
case "image/gif":
format = ImageFormat.Gif;
break;
default:
format = ImageFormat.Jpeg;
break;
}
context.Response.ContentType = contentType;
bitOutput.Save(context.Response.OutputStream, format);
bitOutput.Dispose();
return;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
任何想法,为什么?
检查与Firebug的NET控制台,在开发工具铬合金网片或招潮蟹什么浏览器实际请求 – madaboutcode 2012-04-26 13:36:09
是否webconfig知道新的处理程序服务器? http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.processrequest(v=vs.80).aspx – rt2800 2012-04-26 13:38:02
我认为你需要检查是否有抛出错误,调试到看看你是否得到了图像并发送它,那么如果所有的工作和问题都在img标签上,那么在你的情况下,我将使用URLEncode对http://进行编码。此外,我将remvoe WebService和WebServiceBinding这不属于处理程序。 – Aristos 2012-04-26 13:45:04