PDA

View Full Version : مشکل تصوير امنيتي ايجاد شده توسط httphandler با UpdatePanel



bftarane
جمعه 02 فروردین 1392, 18:46 عصر
سلام.
من با استفاده از لينک زير تصوير امنيتي ايجاد مي کنم موقع ثبت نام کاربر
http://codes.codedigest.com/CodeDigest/88-A-Simple-CAPTCHA-Image-Verification-in-C--and-ASP-Net.aspx

مسئله اينجاست که من مي خوام يه دکمه کنار تصوير امنيتي بزارم و هر وقت کاربر اون دکمه رو کليک کرد تصوير امنيتي مجدداً ايجاد بشه. که البته با نوشتن اين کد اين کار هم انجام ميشه

protected void btn_genCaptcha_Click(object sender, EventArgs e)
{
SetVerificationText();
}
ولي مسئله اينجاست که من مي خوام بدون رفرش شدن صفحه اين کار انجام بشه بنابراين اومدم دکمه و کنترل image رو درون يک Update Panel قرار دادم به صورت زير

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<tr>
<td colspan="2">
<asp:Image ID="imCaptcha" ImageUrl="~/Captcha.ashx" runat="server" />
<br />
<br />
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="txt_verify"
ErrorMessage="کد امنيتي را اشتباه وارد کرده ايد. لطفاً دوباره سعي کنيد."
OnServerValidate="CAPTCHAValidate" ValidationGroup="reg"></asp:CustomValidator>
</td>
<td colspan="2">
<asp:Button ID="btn_genCaptcha" runat="server" onclick="btn_genCaptcha_Click" Text="ايجاد مجدد تصوير امنيتي" ValidationGroup="genCaptcha" />
</td>
</tr>
</ContentTemplate>
</asp:UpdatePanel>

ولي صفحه کلاً رفرش ميشه.

فکر مي کنم دليلش استفاده از httphandler باشه. آيا درسته؟
دليلش چيه؟ راه حلش چيه؟
لطفاً راهنمايي کنيد.

mohammad kafiyan
جمعه 02 فروردین 1392, 19:44 عصر
سلام دوست عزیز من هم این مشکل دارم ولی به جای update panel می خوام از jquery.ajax استفاده کنم برای refresh ولی نم دونم درون تابع sucess چه طوری مقدار را به image url برگردونم
حالا چرا از update panel می خوای استفاده کنی؟؟

bftarane
جمعه 02 فروردین 1392, 19:55 عصر
حالا چرا از update panel می خوای استفاده کنی؟؟اگه جواب بده چرا استفاده نکنم؟
با jquery آشنايي دارم ولي با jquery.ajax نه فقط شنيده بودم. حالا بدم نمي ياد دنبال اين روش هم برم ولي دوست دارم جواب پست اول رو بدونم.

mohammad kafiyan
جمعه 02 فروردین 1392, 19:59 عصر
شدیدا دارم روش کار می کنم ولی به نتیجه نرسیدم حتی یک تایپیک هم زدم که دوستان راهنمایی کنند ولی ...

saeed31641
جمعه 02 فروردین 1392, 20:45 عصر
مشکل اینه که شما یه تیکه کد مزراین در صورتیکه ما از کل برنامه و کدهای که نوشتین خبر نداریم .خانتم bftarane (http://barnamenevis.org/member.php?82506-bftarane) یه سمپل از کدت درست کن بزار
واسعه من این خطا رو میده
Object reference not set to an instance of an object.
فکر کنم سشن cAPTCHA رو نمیشناسه

bftarane
جمعه 02 فروردین 1392, 21:09 عصر
من لينکي که ازش استفاده کردم رو در پست اول گذاشتم و براي تست همون لينک کامله به جز اينکه آپديت پنل اضافه بشه و باتن و image توش گذاشته بشه.
با اين حال نمونه کوچيکي درست کردم و ضميمه کردم

mohammad kafiyan
جمعه 02 فروردین 1392, 22:22 عصر
<asp:UpdatePanel runat="server" id="UpdatePanel1">
<ContentTemplate>
کنترل image را اینجا قرار بده ببین درست کار می کنه

<asp:Button runat="server" id="btnSubmit" Text="Refresh" />
</ContentTemplate>
<Triggers>
<asp:postbacktrigger ControlID="btnSubmit" />
</Triggers>
</asp:UpdatePanel>

saeed31641
جمعه 02 فروردین 1392, 22:28 عصر
مشکلتون حل شد در ashx در حاظه کش هست و با اپدیت پنل اجرا نمیشه دوباره .

protected void btn_genCaptcha_Click(object sender, EventArgs e)
{
SetVerificationText();
lbl_register.Text = "ali";
imCaptcha.ImageUrl = "~/Captcha.ashx?id"+DateTime.Now;

}


راستی دکمه تون داخا آپدیت پنل حتما برارید ها.

mohammad kafiyan
جمعه 02 فروردین 1392, 22:43 عصر
دوست عزیز اگر امکان داره می تونی بگی حالا چگونه می تونم با استفاده از jquery.ajax عملیات refresh را انجام بدم
http://barnamenevis.org/showthread.php?389870-Refresh-%D8%B4%D8%AF%D9%86-Captcha-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-http-handler-jquery.ajax

bftarane
جمعه 02 فروردین 1392, 23:46 عصر
مشکلتون حل شد در ashx در حاظه کش هست و با اپدیت پنل اجرا نمیشه دوباره .
فکر کنم شما سوال من رو درست متوجه نشديد.
مسئله اين نيست که تصوير تغيير نمي کنه. تصوير تغيير ميکنه با کليک دکمه ولي کل صفحه رفرش ميشه انگار هيچ آپديت پنلي وجود نداره.

<asp:UpdatePanel runat="server" id="UpdatePanel1">
<ContentTemplate>
کنترل image را اینجا قرار بده ببین درست کار می کنه

<asp:Button runat="server" id="btnSubmit" Text="Refresh" />
</ContentTemplate>
<Triggers>
<asp:postbacktrigger ControlID="btnSubmit" />
</Triggers>
</asp:UpdatePanel>


اين روش هم جواب نداد.

bftarane
شنبه 03 فروردین 1392, 00:20 صبح
دوست عزيز
mohammad kafiyan (http://barnamenevis.org/member.php?109327-mohammad-kafiyan)

در اون لينکي که گذاشتيد هم نوشتم

document.getElementById('<%=Image1.ClientID%>').src="Handler.ashx";
ببينيد کدهاي بالا جواب ميده؟

saeed31641
شنبه 03 فروردین 1392, 08:05 صبح
منم مشکل شما رو متوجه شدم برنامتون کمی تغغیر دادم متاسفانه نمی تون پروژتون اینجا اپلود کنم .شما هم دکمه تون و هم عکس با هم بزارین داخل اپدیت پنل .کدهایی که گفتم تغغیر بدین مشکل حل میشه.




<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button ID="btn_genCaptcha" runat="server" OnClick="btn_genCaptcha_Click" Text="ايجاد مجدد تصوير امنيتي" ValidationGroup="genCaptcha" />
<asp:Label ID="lbl_register" runat="server" Text=""></asp:Label>
<%--<img id="Img1" alt="" src="~/Captcha.ashx" runat="server" />--%>
<asp:Image ID="imCaptcha" ImageUrl="~/Captcha.ashx" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>


شما مشکل کلا یه چیز دیگه صفحات ashxدر اپدیت پنل مشکل دارند مثل اینکه اصلا شما اپدیت پنل نزاشتی کلا صفحه دوباره رفرش میشه .

bftarane
شنبه 03 فروردین 1392, 23:56 عصر
با توجه به جوابي که در لينک زير به من داده شد اومدم با Mondor captcha که در لينک زير بهش اشاره شده امتحان کردم با UpdatePanel هم جواب داد.
منتها اين رو بگم که با ورژن جديد MSCaptcha.dll ارور مي گرفتم که وقتي ورژن قديميش رو دانلود کردم و استفاده کردم همه چي به خوبي پيش رفت.
http://www.aspforums.net/Threads/563749/are-httphandler-and-updatepanel-incompatible/
البته خيلي دوست داشتم بدون Dll اين کار رو مي تونستم انجام بدم ولي فعلاً سوادم بيشتر از اين اجازه مانور به من نداد.

..............................
آقاي saeed31641 از شما هم خيلي متشکرم ولي من نهايتاً متوجه پاسخ شما نشدم.
چون از طرفي گفتيد که آپديت پنل استفاده کنم و از طرفي گفتيد که صفحات ashxدر اپدیت پنل مشکل دارند بنابراين من متوجه منظور شما نشدم. کد پست 8 رو هم امتحان کردم در حالي که کنترل Image و دکمه هر دو در آپديت پنل بودن و نتيجه نگرفتم.
در هر صورت خواستم از اينکه وقت گذاشتيد تشکر کنم.


راستي اين رو يادم رفته بود، من فايل zip که دانلود کردم (ورژن قديمي) ابتدا از حالت block خارجش کردم به نحوي که در لينک زير توضيح داده و بعد Extractش کردم.
http://apps.martinnyhjem.dk/archive/misc/mscaptcha-weird-error.aspx

fakhravari
یک شنبه 04 فروردین 1392, 02:17 صبح
سورس برنامه

saeed31641
یک شنبه 04 فروردین 1392, 07:52 صبح
سلام من هر کار میکنم اینجا نمی تونم پروژتون بزارم لطفا ایمیلتون پیام خصوصی بدین تا براتون ایمیل کنم . با برنامه خودتون درست کردم

bftarane
یک شنبه 04 فروردین 1392, 16:41 عصر
آقاي saeed31641 بله حق با شماست سمپل شما جواب داد.
خيلي جالبه اومدم در مثال خودم يه آپديت پنل ديگه انداختم تو صفحه و دکمه و کنترل Image رو به اون منتقل کردم درست شد.
البته کدهاي پست 8 رو هم استفاده کردم.
انگار آپديت پنل قبلي دچار مشکلي شده بود.

ممنون از شما.