0

asp.netでキャプチャハンドラーを試している間、行き詰まりました。助けていただければ幸いです。そのようなハンドラーがあると想像してください:

public void ProcessRequest(HttpContext context)
{
    var text = generateText();
    using (var image = generateImage(text))
    {
        context.Response.Clear();
        context.Response.ContentType = "image/jpeg";
        context.Session.Add("captcha", text);
        image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
    }
}

次に、いくつかのdefault.aspxに次のように配置します。

<img src="<%=CaptchaImageUrl %>"/>
<p><%=Context.Session["captcha"]%></p>

つまり、キャプチャ画像を表示し、セッションに保存されているキャプチャ値を確認します。しかし、問題は、default.aspxの現在のセッション値がキャプチャハンドラー側で古くなっていることです。

<p><%=Context.Session["captcha"]%></p>

常に前のキャプチャ値を返します。助言がありますか?

4

1 に答える 1

0

キャプチャは、ブラウザから画像が要求された場合にのみセッションに保存されます。ただし、ページにセッション値を表示しています。これは、ブラウザから画像が要求される前に発生します。

これが、ページに前のキャプチャが表示される理由です。

これを修正するには、をページに移動generateTextし、ページにこの値をセッションに保存させることをお勧めします。ハンドラーは、セッションから値を選択し、画像を作成してレンダリングするだけです。

于 2012-10-09T16:25:51.563 に答える