2012-04-26 4 views
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; 
      } 
     } 
    } 
} 

任意のアイデアなぜですか?

+0

放火犯のNETコンソールで確認し、開発ツールでクロームネットワーク]タブをまたはブラウザが実際のWebConfigは、新しいハンドラを知ってい – madaboutcode

+0

サーバに要求し何フィドラー? http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.processrequest(v=vs.80).aspx – rt2800

+0

私はあなたがデバッグするには、スローエラーがあるかどうかを確認する必要があると思いますあなたがイメージを取得して送信するかどうかを確認し、問題となっているものがimgタグにある場合は、URLエンコードを使用してhttp://をエンコードします。また、私はremvoe WebServiceとWebServiceBindingこれはハンドラに属していません。 – Aristos

答えて

-1

末尾に追加してみてください:

Response.Flush(); 
Response.End(); 
+0

違いを起こさなかった – user441365

関連する問題