質問

AsyncPostBackはどのように私はそれを自己をリフレッシュするために.ashx(キャプチャ用ハンドラ)に伝えることができますか?

、ボタン「btnQuery」によってトリガを行う場合には、その特別なCAPTCHAのためにいくつかのコントロールのためのUpdatePanelを使用して

イム

IM画像下入力のNumにキャプチャの画像を検証するためにセッションを使用して

これはハンドラです。

<%@ WebHandler Language="C#" Class="captcha" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Drawing;

public class captcha : IHttpHandler, IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/GIF";

        Bitmap imagen_GIF = new System.Drawing.Bitmap(80, 30);
        Graphics grafico = System.Drawing.Graphics.FromImage(imagen_GIF);
        grafico.Clear(Color.Gainsboro);

        Font tipo_fuente = new Font("Comic Sans", 12, FontStyle.Bold);

        string randomNum = string.Empty;
        Random autoRand = new Random();

        for (int x = 0; x < 5; x++)
        {
            randomNum += System.Convert.ToInt32(autoRand.Next(0, 9)).ToString();
        }
        int i_letra = System.Convert.ToInt32(autoRand.Next(65, 90));

        string letra = ((char)i_letra).ToString();
        randomNum += letra;

        context.Session["RandomNumero"] = randomNum;

        grafico.DrawString(randomNum, tipo_fuente, Brushes.Black, 5, 5);

        imagen_GIF.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);

        tipo_fuente.Dispose();
        grafico.Dispose();
        imagen_GIF.Dispose();
    }

    public bool IsReusable { get { return false; } }
}

私はこれをやっていない。..画像をリフレッシュしたいです

   public void postbackear()
    {
        string script = string.Format("Sys.WebForms.PageRequestManager.getInstance()._doPostBack('{0}', '');",
                            btnConsulta.ID);
        ScriptManager.RegisterStartupScript(this.Page, typeof(string), "Refresh", script, true);
    }
役に立ちましたか?

解決

など

としてハンドラのキャッシュ・オプションを試してみてください

context.Response.Cache.SetExpires(DateTime.Now); context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.Cache.SetValidUntilExpires(false);

そのイメージソースが同じではありませんので、私は残ってしまっただけのアイデアはのqueryStringとハンドラを呼び出しているあなたは
を呼び出すいつでも動作します上記以外の場合           Image1.ImageUrl = "Handler.aspx?guid=" + Guid.NewGuid();

他のヒント

のUpdatePanel内の画像のですか?そうでない場合、私はそこにそれを置くと思います。クライアント(ブラウザ)やプロキシがキャッシュされた画像を使用しないように、また、毎回パネルの更新は、独自の画像のURLを確認してください。 GUIDは、トリックを行う必要がクエリ文字列パラメータとして上にタック(例えばYourImageHandler.ashx?XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX)。

エンジェル、

の画像は、サーバから再び要求されていないので、ハンドラは実行する機会がありません。それが再び実行するために取得するには、ブラウザが再び画像を取得する必要があります。

画像について何も更新されていない場合は、

言った、あなたの非同期ポストバックでは、ブラウザがキャッシュ設定に関係なく、再びそれをフェッチする理由がないだろう、など。

は、スクリプトでこれを解決することができますが、もっと簡単な方法は、マイラのアドバイスを取り、あなたの非同期ポストバックの一部としてGUID のことをクエリ画像の文字列との変化にGUIDを付加することです。これは、クライアントに必要な画像のURLを更新し、新しいイメージを取得するためにサーバーに戻ってそれを強制されます。

これで問題が解決しない場合は、ページに画像を追加するために使用したコードだけでなく、画像ハンドラに要求をマッピングし、あなたのweb.configファイルのセクションを投稿してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top