ورود

نسخه کامل مشاهده نسخه کامل : چطور بعد از اجرای url در سمت کلاینت به سمت سرور برگردم؟



roebuck
16-08-2010, 16:36
سلام دوستان
خسته نباشید

من می خوام یک سری ایمیل رو دونه دونه در یک قسمت از url قرار بدم و لینک رو اجرا کنم.
از server.execute استفاده کردم و یک صفحه asp به نام IN_G_Group ساختم.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدو در رویداد Page_BeforeShow صفحه IN_G_Group کد زیر رو قرار دادم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیداما این خطا رو میده:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدمشکل چیه؟
من که هر چی Search میکنم به نتیجه ای نمیرسم.

درسته که یه صفحه دیگه ساختم و response.redirect رو همراه با متغیری که در صفحه اول ساخته بودم(E_M)، اونجا نوشتم؟

مسیر server,execute چطور؟درسته که اسم صفحه ای که ساختم رو نوشتم؟

چرا در خطا ای که داده به جای اسم صفحه(IN_G_Group.asp) ،نوشته: rIN_G_Group.html ؟

زودتر کمکم کنید ممنون میشم..

roebuck
31-08-2010, 10:36
کسی چیزی در این مورد نمیدونه؟!!!!

_H2_
01-09-2010, 04:23
سلام
به نظر میرسد شما قبلاً هم این سوال را پرسیدید...
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کلاً سوال و مبحث شما خیلی گنگ است.
تاپیک های این تیپی (غیرگویا و شفاف) معمولاً بی جواب میماند و افراد ترجیح میدهند خودشان را درگیر نکنند و به سراغ سوالات شفاف و واضح تر بروند.
صحیح و کامل مطرح کردن سوال و ارسال خوب منظور خیلی میتواند کمک کند.

به شخصه با دیدن این پست، اصلاً متوجه نمیشوم میخواستید چه کنید؟ و هدف چیست؟
به دیتابیس وصل میشوید و فیلدی میخوانید، سپس بدون توجه به مقدار خوانده شده، ادرسی را همینطوری و بدون مقدار بازگشتی و هیچ کنترلری در حلقه Execute میکنید!

از عنوان تاپیک هم چیززیادی نمیتوان متوجه شد.

1)
اگر میتوانید شرح دقیق تری از کاری که میخواهید انجام دهید و هدف نهاییتان ارائه دهید.
2)
آیا سرور شما ، زبان و پلتفرم جدید و پیشرفته ASP.Net را پشتیبانی میکند، یا حتماً کمکی که نیاز دارید باید ASP کلاسیک باشد؟
موفق باشید.

_H2_
01-09-2010, 04:25
ویرایش: به علت سرعت کم و تداخل، پست قبلی دوبار ارسال شد.

roebuck
02-09-2010, 08:38
1)
اگر میتوانید شرح دقیق تری از کاری که میخواهید انجام دهید و هدف نهاییتان ارائه دهید.

اول پستم نوشتم: من می خوام یک سری ایمیل رو دونه دونه در یک قسمت از url قرار بدم و لینک رو اجرا کنم.
از این واضحتر موجود نیست:46:
من ایمیل ها رو (E_m) دونه دونه در این url باید قرار بدم و اجرا کنم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

به این صورت که نوشتم error دیگه ای داد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




2)
آیا سرور شما ، زبان و پلتفرم جدید و پیشرفته ASP.Net را پشتیبانی میکند، یا حتماً کمکی که نیاز دارید باید ASP کلاسیک باشد؟

آره،متاسفانه حتما باید ای اس پی کلاسیک باشه..:13:

_H2_
02-09-2010, 14:13
سلام


Redirect-google
Execute-IN_G_Group.asp

یعنی مقصد و هدف نهایی شما، صفحه IN_G_Group.asp نیست و در واقع کد فوق ربطی به IN_G_Group.asp ندارد.
هدف نهایی شما Execute داخل حلقه google است و برای امتحان و به صورت موقت از IN_G_Group.asp استفاده کرده اید؟
کد Redirect تان هم برای امتحان بوده؟


Invalid URL form or fully-qualified absolute URL was used. Use relative URLs
Classic ASP در دستور Execute از QueryString پشتیبانی نمیکند.
یعنی اجرای name.asp با درستی انجام میشود ولی امکان اجرای name.asp?id=5 وجود ندارد.
برای این مسئله میشود از تابع Redirect استفاده کرد.
ولی شما میخواهید در یک حلقه مدام این کار را انجام دهید و اولین Redirect مانع اجرای Redirect های بعدی خواهد شد!


خیلی وقت است کاری به Classic ASP نداشتم...
فکر کردم و تنها راهایی که فعلاً به نظرم رسید آن است که ...

1) از Session استفاده کنید، ایمیل را در session قرار دهید و سپس به صفحه دیگری در سایت Execute کنید که ان صفحه با کمک Session به صفحه اصلی Redirect کند.
(البته بدیهی است استفاده از Session مشکلات همزمانی را پیش می اورد و کاربر نباید در ان واحد دو صفحه دارای این حلقه را باز و اجرا کند!!!!!! که زیاد جالب نیست)

2) از javascript و مثلاً تگ iframe کمک بگیرید!
یعنی لیست email ها را برای javascript در یک آرایه قرار دهید و اجرای صفحات را به سمت کلاینت و javascript واگذار کنید.

شاید راه بهتری هم داشته باشد ولی من بلد نیستم.


حتما باید ای اس پی کلاسیک باشه
البته در ASP.Net مشکلی در این خصوص وجود ندارد و حداقل برای تکمیل مطلب و مقایسه هم شده بد نیست کد ان را قرار دهم.
(دستور Using شبیه Dim است ولی در End Using خودکار شی را نابود میکند.)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته حاصل اجرای کد فوق، html خروجی صفحات Execute شده را هم به انتهای فایل جاری اضافه میکند.
اگر میخواهید هیچ چیزی دیده نشود، کافی است یک ظرف سفارشی برابر قرار دادن html خروجی صفحات Execute معرفی کنید تا دات نت html ان صفحات را در این ظرف بریزد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(البته اگر نتیجه html نهایی اجرای این صفحات نیاز نباشد، کد فوق را میتوان طوری تصحیح کرد که بازدهی و سرعت به میزان قابل ملاحظه ای افزایش یابد، که به علت کدبیشتر، فعلاً از بیان ان صرف نظر میکنم)

موفق باشید.

roebuck
09-09-2010, 11:02
ممنون از توضیحات خوبتون.



2) از javascript و مثلاً تگ iframe کمک بگیرید!
یعنی لیست email ها را برای javascript در یک آرایه قرار دهید و اجرای صفحات را به سمت کلاینت و javascript واگذار کنید.

در اینصورت اجرای تک تک صفحات در سمت کلاینت دیده میشود؟؟

_H2_
12-09-2010, 22:35
سلام

در اینصورت اجرای تک تک صفحات در سمت کلاینت دیده میشود؟؟
تقریباً پیش بینی تان درست است، به این معنی که تمام درخواست ها در کلاینت اجرا میشود ولی لزومی نیازی نیست کاربر چیزی ببیند.
البته همچنان راه حل Session باقی است.
ولی هر دو راه زیاد جالب نیستند و من هم در ASP Classic چیز دیگری به ذهنم نمی رسد.


اگر پروژه تان عملی (غیر تحقیقاتی است) پیشنهاد میکنم از ASP Classic قدیمی به پلتفرم جدید و پیشرفته ASP.Net مهاجرت کنید.
موفق باشید.

roebuck
13-09-2010, 08:48
تقریباً پیش بینی تان درست است، به این معنی که تمام درخواست ها در کلاینت اجرا میشود ولی لزومی نیازی نیست کاربر چیزی ببیند.
البته همچنان راه حل Session باقی است.
ولی هر دو راه زیاد جالب نیستند و من هم در ASP Classic چیز دیگری به ذهنم نمی رسد.


اگر در راهی که با جاوا اسکریپت نوشته میشه، کلاینت اجرا شدن صفحات رو نمیبینه پس مشکل این راه چیه؟


اگر پروژه تان عملی (غیر تحقیقاتی است) پیشنهاد میکنم از ASP Classic قدیمی به پلتفرم جدید و پیشرفته ASP.Net مهاجرت کنید.

اگر واقعا راهی در ای اس پی کلاسیک پیدا نکردم ناچارا همین کار رو میکنم.
فقط یه سوال اینکه: مشکلی نیست در کنار صفحات ای اس پی ، صفحه ای اس پی دات نت بذارم؟

_H2_
15-09-2010, 23:00
سلام


اگر در راهی که با جاوا اسکریپت نوشته میشه، کلاینت اجرا شدن صفحات رو نمیبینه پس مشکل این راه چیه؟

کاربر چیزی نمیبیند ولی در واقع همه با کلایت انجام میشود و تازه اگر javascript هم غیر فعال باشدف اصلاً انجام نمیشود ...
به نظرم کار اصولی و منطقی کدی مشابه پست 6 است.


مشکلی نیست در کنار صفحات ای اس پی ، صفحه ای اس پی دات نت بذارم؟
مشکلی ایجاد نمیکند.
البته بدیهی است که سرور شما باید ASP.Net را ساپورت کند.
و نیز اصولاً جاییکه بتوان ASP.Net استفاده کرد و فایل aspx داشت دیگر داشتن فایل asp معنی ندارد!
چون ASP.Net تمام قابلیت های ASP Classic را دارد و استفاده از نسخه قدمی بی معنی خواهد بود ولی مشکلی ایجاد نمیکند.

موفق باشید.

roebuck
18-09-2010, 08:48
کاربر چیزی نمیبیند ولی در واقع همه با کلایت انجام میشود و تازه اگر javascript هم غیر فعال باشدف اصلاً انجام نمیشود ...
به نظرم کار اصولی و منطقی کدی مشابه پست 6 است.پس اينطور كه معلومه كار درست و اصولي اينه كه NEt. بنويسمش..


مشکلی ایجاد نمیکند.
البته بدیهی است که سرور شما باید ASP.Net را ساپورت کند.
و نیز اصولاً جاییکه بتوان ASP.Net استفاده کرد و فایل aspx داشت دیگر داشتن فایل asp معنی ندارد!
چون ASP.Net تمام قابلیت های ASP Classic را دارد و استفاده از نسخه قدمی بی معنی خواهد بود ولی مشکلی ایجاد نمیکند.منظورم در هاست بود.به اين خاطر اين سوال رو پرسيدم :چون صفحات ديگه اي كه در سايت داره استفاده ميشه اي اس پي كلاسيك هست كه با نرم افزار كد شارِژ‍‍‍‍ استوديو نوشتمش...و الان به خاطر اين صفحه مجبورم كه اي اس پي دات نت بنويسم..

اين كدي كه با دات نت نوشتيد رو ميشه به زبان سي شارپ بنويسيد..ممنون ميشم

roebuck
20-09-2010, 19:41
اين كد رو با سي شارپ نوشتم،



string cs;
cs = @"Data Source=(local);Initial Catalog=----;User ID=----;Password=----";


string SQLSELECT = "SELECT [Email] FROM [UserTest];";

string URL = "[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]{0}&_referer=[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] %3FpageId%3D3203%26loc%3Dfa";

using (System.Data.SqlClient.SqlConnection dbCon = new System.Data.SqlClient.SqlConnection(cs))

{
using (System.Data.SqlClient.SqlCommand dbCom = new System.Data.SqlClient.SqlCommand(SQLSELECT, dbCon))
{
using (System.IO.StringWriter html = new System.IO.StringWriter())
{

dbCon.Open();

using (System.Data.SqlClient.SqlDataReader dbDr = dbCom.ExecuteReader())
{


while ((dbDr.Read()))
{
this.Server.Execute(string.Format(URL, dbDr["email"]), html);

}

}
}
}
}

حالا روي خط قرمز اين خطا رو داد:


Invalid path for child request '[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]'. A virtual path is expected.نكنه باز هم مثل اي اس پي كلاسيك در execute در urlمشكلي داشته باشه؟!!:41:



مشكل از كجاست؟

_H2_
21-09-2010, 00:25
سلام

حالا روي خط قرمز اين خطا رو داد
اطلاعات من در مورد Server.Execute کامل نبود ...
ولی مشکلی وجود ندارد !
شما میخواهید صفحه مورد نظرتان یکبار اجرا شود؟ درست عین زمانی که ان آدرس را وارد مرورگر میکنید و enter میکند؟ درست است؟؟؟

از این کد استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

(ضمناً اگر زمانی خواستید مستقیم ایمیل هم بفرستید، مشکلی وجود ندارد و امکان آن بدون هیچ ابزار خارجی فراهم است)

موفق باشید.

roebuck
21-09-2010, 16:57
به اينصورت كه شما گفتيد نوشتم اما مشكل حالا اين بود كه فقط آخرين ايميل در url قرار ميگرفت و enter ميشد!!!

يعني در دستور "SELECT [Email] FROM [UserTest];" فقط آخرين ايميل select شده در ul وارد ميشد !!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


كلا عملكرد DownloadData چي هست؟
چرا در حلقه اينطور عمل ميكرد؟

_H2_
23-09-2010, 00:37
سلام

يعني در دستور "SELECT [Email] FROM [UserTest];" فقط آخرين ايميل select شده در ul وارد ميشد !!
ایندیگر مشکل شماست!
منظورم ان است که جایی از کار شما ایراد دارد...
- دقت بیشتری کنید، مطمئن شوید دیتابیس را صحیح داده اید و اطلاعات در ان قرار دارد.
- دستور sql را چک کیند.
- رشته connectionstring را چک کنید و مطمئن شوید به دیتابیسی که میخواهید وصل شده اید.
- اگر پروژه تان خیلی شلوغ و پلوغ و پر از کد و فایل دیتابیس و... شده، پیشنهاد میکنم newproject ای بزنید و در فضای جدید و خالی و به طور از شبه ای امتحان کنید.

در صورت ادامه مشکل بخش فوق پروژتان را برایم آپلود کنید.


كلا عملكرد DownloadData چي هست؟
یک آدرس اینترنتی را دانلود میکند.
درخواست میدهد و محتویات را از اینترنت میگرید، عین مرورگرهای اینترنتی.
فرقی ندارد... این محتویات میتواند یک فایل تصویر یا یک فایل zip یا یک html و... باشد.
در مرورهم که ادرسی وارد میکنید و enter میکنید، مرورگر فایل آن آدرس را دانلود میکند و بعد سعی میکند بسته به محتویات اطلاعات دریافت شده (مستقیماً ربطی به پسوند و آدرس ندارد) آن را به طرز صحیح نشان دهد.
متن خاص باشد یکجوری نمایس میدهد.
html باشد یک جور دیگر و تصویر باشد یک جور دیگر و... و...

ما در دستور فوق همین کار را کردیمف ولی از خروجی اطلاعات دانلود شده استفاده نکرده ایم و به نوعی انها را دور ریختم، فقط میخواستیم این صفحه یکبار اجرا شود.

موفق باشید.

roebuck
25-09-2010, 16:24
كلا اين كدهايي كه نوشتم براي عضو كردن ايميل ها در گروپ گووگل هست..
كه با قرار دادن ايميل ها در url يك مرحله از عضويت پيش ميرفت يعني ايميلي از گروپ گوگل به ايميل آنها فرستاده ميشد...

الان متوجه شدم كه با كمك شما كد درست نوشته شده اما موضوع اين هست كه انگار ديگه اجرا شدن اين url اين حركت رو انجام نميده!!!... در صورتي كه گفتند اين كار رو انجام ميداده!!؟؟....


حالا بدون توجه به اين مساله يه سوال ديگه:

من اين صفحات رو در سيستم خودم با ديتا بيسي كه در سيستم خودم هست چك كردم..و بعد هم كانكشن ديتابيسم رو به كانكشن هاست تغيير دادم و درست صفحه اجرا شد .

اما حالا كه پروژه رو پابليش ميكنم و در هاست قرار ميدم خطا ميده:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدهمينطور كه خواست اين كد رو در web.config داخل <system.web> گذاشتم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیداما باز هم همين خطا رو ميده..

مشكل از كجاست؟
حتي يك صفحه خالي رو هم كه ارتباطي با ديتابيس نداره مي خوام باز كنم اين خطا رو ميده..!!؟؟

_H2_
25-09-2010, 22:35
سلام
متن خطای فوق چیزی نشان نمیدهد.
asp.net به صورت خودکار هیچ اطلاعاتی از خطا نشان نمیدهد تا احتمالا مورد سوء استفاده سایرین قرار نگیرد.
با off کردن صحیح customErrors تازه متن و کد محل و دلایل خطا نشان داده میشود.
با دقت بیشتری customErrors را off کنید و فایل web.config را آپلود کنید.

پس کد خطای واقعی که حاوی خط محل خطا و دلایل و... است را اینجا قرار دهید تا بتوان جواب مناسب داد و کمکتان کرد.
(البته شاید با دیدن متن خطا خودتان هم متوجه دلیل و راه حل بشوید)

موفق باشید.