0

1つのセッションで互いに異なるキャプチャを生成するにはどうすればよいですか?

例:ユーザーが次のステップに進む前に、キャプチャを含む申請フォームがあります。問題は、新しいウィンドウタブで別の同じアプリケーションフォームを開くと、最初のアプリケーションフォームと同じキャプチャが生成されることです。私が必要としているのは、異なるキャプチャ値です。

この問題を解決するのを手伝ってください...tq

私はasp.netを使用しています。

ここにサンプルコード

コードを生成するには

private string GenerateRandomCode()
{
    string s = "";
    for (int i = 0; i < 6; i++)
        s = String.Concat(s, random.Next(10).ToString());
    return s;
}

キャプチャ画像を生成するには

namespace OneStepContactMe.Layouts.OneStepContactMe
{
    public partial class captchapage : UnsecuredLayoutsPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["Map"] == null)
                { 
                    Session["Map"] = GenerateRandomCode();      
                }
                // Create a CAPTCHA image using the text stored in the Session object.
                CaptchaImage ci = new CaptchaImage(this.Session["Map"].ToString(), 200, 50, "Century Schoolbook");

                // Change the response headers to output a JPEG image.
                this.Response.Clear();
                this.Response.ContentType = "image/jpeg";

                // Write the image to the response stream in JPEG format.
                ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);

                // Dispose of the CAPTCHA image object.
                ci.Dispose(); 
            }
            else {
            }
        }

        /// <summary>
        /// generate random 6 digit
        /// </summary>
        /// <returns> string of 6 digits </returns>
        private string GenerateRandomCode()
        {
            Random random = new Random();
            string s = "";
            for (int i = 0; i < 6; i++)
                s = String.Concat(s, random.Next(10).ToString());
            return s;
        }

        //to allow anonymous access to this pages
        protected override bool AllowAnonymousAccess
        {
            get
            {
                return true;
            }
        }

        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            this.MasterPageFile = "/_catalogs/masterpage/MyCorridor.MemberArea.v1.master";
        }
    }
4

1 に答える 1

0

Random ローカル変数をメンバー フィールドに変更します。例えば

public partial class captchapage : UnsecuredLayoutsPageBase
{
    private Random random = new Random();
}
于 2012-10-17T07:44:16.007 に答える