PDA

View Full Version : تنظیم اینتراوب دلفی در IIS



ب- تات
دوشنبه 07 خرداد 1386, 18:56 عصر
من با اینتراوب یه سایت طراحی کردم که با سرویس ISAPI کار میکنه برای کار مورد نیاز در اداره خودمون .
نیاز دارم که اون رو روی Hosting ادارمون قرار بدم اول میخوام در این مورد منو راهنمایی کنید.
برنامه من دارای 2 فولدر یکی به نام FILES در مسیر EXE یا DLL که در اون فایلهای عکس و فلش مورد نیاز برنامه رو ریختم و دیگری فولدر DB که دیتا بیس برنامس . با EXE برنامه هیچ مشکلی ندارم همه چیز مرتبه اما مشکل من اینجاست که وقتی در IIS برای استفاده از فایل DLL ساخته شده برنامه توسط سرویس ISAPI یک Virtual Directory ایجاد میکنم و مسیر برنامه رو تنظیم میکنم فایلهای عکس و هر چیزی که در برنامه به مسیر فولدر FILES یا DB نسبت داده شده شناخته نمیشود. مثلا من در بالای فرم اصلی یک فایل فلش دارم اما وقتی Brows میکنم اون فلش نمایش داده نمیشه.
عزیزان لطف کنن بگن مشکل من کجاست و چه تغییراتی در IIS یا مسیر فایلها باید بدهم.

ghabil
دوشنبه 07 خرداد 1386, 22:26 عصر
یک سول مهم : از Template هم استفاده کردی ؟

ببین روتین کار اینه که DLL در فلدر Cgi-Bin با دسترسی Execute قرار میگیره بقیه فلدرها در خود Root سایت نه اینکه توی فلدر cgi-bin .
اما Templateها باید توی همون cgi-bin قرار بگیرند ، اگر tempalte استفاده میکنی باید حواست به یک سری چیزهای دیگه هم باشه ...

راستی از چه ورژن اینتراوب استفاده میکنی؟

ب- تات
سه شنبه 08 خرداد 1386, 11:52 صبح
اینتراوب Delphi 2006 فکر میکنم 8 باشه . از Template هم استفاده نمیکنم
در مورد Template منظورتون از چیزهای دیگه چی هست.
اونوقت اگر روی سیستم خودم که ویندوز ایکس پی هست بخوام IIS رو برای همین برنامه ست کنم چی؟

ghabil
سه شنبه 08 خرداد 1386, 18:51 عصر
توی Template آدرس دهی فایلها (مثلا عکسها) از توی فلدر فایلز در حالت ISAPI و StandAlone فرق داره که یا باید آدرس Absolute بدی یا یک مقدار ثابت تعریف کنی بصورت متغیر جاوا اسکیرپتی...

خب IIS رو ست کن مشکلت چیه ؟!

ب- تات
چهارشنبه 09 خرداد 1386, 12:31 عصر
همین رو میگم دیگه. از توی فولدر Files نمیتونه فایلهام رو ببینه

توی Template آدرس دهی فایلها (مثلا عکسها) از توی فلدر فایلز در حالت ISAPI و StandAlone فرق داره که یا باید آدرس Absolute بدی
آدرس Absolute یعنی چی؟

ghabil
چهارشنبه 09 خرداد 1386, 13:29 عصر
آهان ، یک نکته خیلی خیلی مهم :
وقتی ISAPI اجرا میکنی چون ISAPI رو DllHost اجرا میکنه برای همین CurrentDirectory همیشه به فلدر System32 در فلد ویندوز ست میشه که همه آدرسهای Reletiveی که توی حالت StandAlone کار میکنند رو خراب میکنه ، واسه همین بهتره که همیشه SWSystem رو Use کنی و همیشه از توی اون تابع gsAppPath رو صدا کنی تا آدرس درست فایل DLL رو بهت بده . و همیشه این آدرس رو قبل از آدرسهای Reletive بزاری.
باز هم میگم این خیلی نکته مهمیه همه جا باید حواست بهش باشه.

ب- تات
پنج شنبه 10 خرداد 1386, 08:04 صبح
بهتره که همیشه SWSystem رو Use کنی و همیشه از توی اون تابع gsAppPath رو صدا کنی تا آدرس درست فایل DLL رو بهت بده
البته همین کار را کردم اما مثلا آدرس را به این شکل نشون میده :
c:inetpubscriptsiwIWIwRDLL.dll
یعنی همه رو میچسبونه به هم.
در ضمن یعنی اگر من فایل DLL رو همونطوری که StandAlone را ساختم بزارم تو هاست درست کار نمیکنه و آدرسهای Reletive اشتباه خواهند شد؟

ghabil
پنج شنبه 10 خرداد 1386, 17:53 عصر
البته همین کار را کردم اما مثلا آدرس را به این شکل نشون میده :
c:inetpubscriptsiwIWIwRDLL.dll
یعنی همه رو میچسبونه به هم.

راستش نمیدونم این مشکل از کجاست من همیشه از این تابع استفاده میکنم این مشکلم ندارم !



در ضمن یعنی اگر من فایل DLL رو همونطوری که StandAlone را ساختم بزارم تو هاست درست کار نمیکنه و آدرسهای Reletive اشتباه خواهند شد؟


دقیقا چون همونطوری که بهت گفتم CurrentDirectory میشه Win32
راستی اینو یادم رفت بگم IW از ورژن 7 به بعد دوتا تابع به کلاس TWebApplication اضاقه کرده یکی ApplicationPath و یکی AppURLBase که این دوتا دایرکتوری برنامه و URL برنامه رو برمیگردونند از اینها هم میتونی بجای اون تابع استفاده کنی....

ب- تات
سه شنبه 22 خرداد 1386, 21:29 عصر
ضمن تشکر از شما دوستان همه مشکلات من حل شد و فایل هم بر روی سایت upload شد . اما حالا یه مشکل جدید . من Charset را برابر ARABIC-1256 قرار دادم اما حالا که فایلم رفته رو سایت همه فونتهای فارسی رو به صورت ؟؟؟؟؟؟؟؟؟؟؟؟؟ علامت سئوال نشون میده میشه راهنمایی کنید. یه چیز دیگه حالا که فایل DLL رو فرستادم روی Host چطور میتونم اون رو Update کنم . ؟

ghabil
چهارشنبه 23 خرداد 1386, 09:12 صبح
خب نباید 1256 کار کنی دیگه ، استاندارد وب UTF-8 هست و اطلاعات هم برات UTF فرستاده میشند منتها تو وظیفه تبدیل اطلاعات از UTF-8 به کدپیج رو گذاشتی بر عهده ویندوز و چون Locale ویندوز سرورت انگلیسیه در حالیکه Locale کامپیوتر خودت فارسی پس طبیعاتا اطلاعاتی که روی کامپیوترت زدی روی سرور دیده نمیشه .

در مورد آپدیت Dll هم بهترین گزینه استفاده از ISAPILoader هست یک جستجو بزن یادم نیست قبلا توضیح دادمش یا نه اگر نبود یکبار نحوه کار باهاش رو توضیح میدم.

ب- تات
چهارشنبه 23 خرداد 1386, 15:24 عصر
چون Locale ویندوز سرورت انگلیسیه در حالیکه Locale کامپیوتر خودت فارسی پس طبیعاتا اطلاعاتی که روی کامپیوترت زدی روی سرور دیده نمیشه .
خوب حالا راه حل چیه باید به Admin سروری که Host ازش گرفتم بگم تغییراتی بده یا خودم باید کاری بکنم؟
در ضمن وقتی هم که با Encoding خود اینترنت اکسپلورر UTF-8 رو انتخاب میکنم باز هم همون شکل نشون میده.
یک توضیح دیگه: در سرور ، فایل DLL درون cgi- bin قرار نداره . درجریان باشید. بلکه در درون فولدر Inetpub مربوط به IIS قرار دارد. اینکه مسئله ای ایجاد نمیکنه؟ سرور هم ویندوز 2003 هستش.

ب- تات
چهارشنبه 23 خرداد 1386, 15:55 عصر
در مورد ISAPILoader هم چیزی نگفتین تا حالا لذا زحمتش رو بکشین .
البته توی گوگل یه توضیحاتی گرفتم. مسئله اصلی اینجاست از کجا باید ISAPILoader رو پیدا کنم ؟

spicirmkh
چهارشنبه 23 خرداد 1386, 17:37 عصر
سلام دوستان

بالاخره توانستم یک برنامه کوچک تحت WEB بنویسم و این برنامه داخل هاست در فولدر cgi-bin قرار دادم
این برنامه با این دستور اجرا شد

http://www.mysite.com/cgi-bin/test.dll

سوالی که داشتم باید حتما اینطوری آدرس بدهم یا یک برنامه index.htm نوشت که این برنامه به این برنامه اشاره می کند یا روشی هست که مستقیما اجرا بشود و کاربر نیازی به دانشتن نام فایل و ادرس ندارد

با تشکر

ghabil
پنج شنبه 24 خرداد 1386, 09:19 صبح
خوب حالا راه حل چیه باید به Admin سروری که Host ازش گرفتم بگم تغییراتی بده یا خودم باید کاری بکنم؟
در ضمن وقتی هم که با Encoding خود اینترنت اکسپلورر UTF-8 رو انتخاب میکنم باز هم همون شکل نشون میده.
یک توضیح دیگه: در سرور ، فایل DLL درون cgi- bin قرار نداره . درجریان باشید. بلکه در درون فولدر Inetpub مربوط به IIS قرار دارد. اینکه مسئله ای ایجاد نمیکنه؟ سرور هم ویندوز 2003 هستش.

سایتت رو دیدم ، هنوز به مشکلی که گفتم نخوردی ، یک مشکل عقب تری فکر میکنم ، مشکلت اینه که فارسیهارو توی دلفی نوشتی ، یعنی توی دلفی 1256 نوشتی ، راه حلت تا وقتی که از دلفی دات نت استفاده نکنی این که بجای نوشتن حروف ،یونیکد انتیتی هاشون رو بزاری ، یعنی مثلا اگر کپشن یک ریدیو باتن رو میخوای بزاری سلام جاش بنویسی :


1587 1604 1575 1605

هرکدوم از اعداد باید یک & و یک # اولشون و یک ; آخرشون باشه که اگر من اینجام میزاشتمشون شما همون سلام رو میدیدن

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


در مورد ISAPILoader هم چیزی نگفتین تا حالا لذا زحمتش رو بکشین .
البته توی گوگل یه توضیحاتی گرفتم. مسئله اصلی اینجاست از کجا باید ISAPILoader رو پیدا کنم ؟

اگر اهل انگلیسی خوندن هستی که این سایت اصلیشه با همه توضیحات (www.eggcentric.com/ISAPILoader.htm)
ولی چشم در اولین فرصت منم یک توضیح مختصری میدم در موردش.




سوالی که داشتم باید حتما اینطوری آدرس بدهم یا یک برنامه index.htm نوشت که این برنامه به این برنامه اشاره می کند یا روشی هست که مستقیما اجرا بشود و کاربر نیازی به دانشتن نام فایل و ادرس ندارد

با تشکر

3 تا راه داری : یکی اینکه یک صفحه Index داشته باشی که مثلا یک لینک توش بزاری به برنامه که با کلیک کاربر بره به این آدرس و اجراش کنه .(که از همه بیشتر استفاده میشه)

یکی اینکه این صفحه Indexت تا هرکی اومد سراعش مستقیما طرف رو Redirect کنه به صفحه برنامت (توی فروم Asp.net چند بار کدش رو گذاشتم)

یکی هم اینکه توی صفحه اولت یک فریم بزاری که سورسش برنامت باشه (که پیشنهاد نمیشه)


پ . ن : کاش این سوالهارو توی تاپیکهای جدا میپرسیدین که اینقدر قاطی نمیشد.

ب- تات
پنج شنبه 24 خرداد 1386, 11:27 صبح
اگر اهل انگلیسی خوندن هستی که این سایت اصلیشه با همه توضیحات
ضمن تشکر از زحمت شما من هم دقیقا همین سایت رو توی گوگل پیدا کردم و متوجه شدم که باید چطور باهاش کار کرد. در واقع فکر کنم نام فایل Loader جایگزین DLL اصلیمون میشه و پسوند DLL اصلیمون باید به UPDATE تغییر نام پیدا کنه تا اونوقت Loader خودش با فایل Dll اصلیمون کار کنه.
اما مشکل اساسی اینجاست:
فایل ISAPILOADER رو از کچا بگیرم آیا شما دارین یا کسی داره که لینک بذاره؟

یک مشکل عقب تری فکر میکنم
منظورتون رو نفهمیدم .

بجای نوشتن حروف ،یونیکد انتیتی هاشون رو بزاری
حالا از کجا یونیکد های اینترنتی هر کلمه رو پیدا کنم؟؟؟؟؟؟؟؟؟؟؟؟

ghabil
پنج شنبه 24 خرداد 1386, 13:34 عصر
من دارمش ، تا آخرین باری هم که یادمه نتنها مجانی بود بلکه OpenSorce هم بود !! الان که نیگاه کردم دیدم پولیش کرده !!
حالا من یکجا Uploadش میکنم هرکی خواست به من یک ایمیل بزنه آدرس دانلودش رو بهش بدم ...

برای پیدا کردن معادلها یونیکدی هر کلمه هم کلی راه هست که یکبار بحث شده چندتاش رو نوشتم ، اما یک راه خیلی راحت اینه که بری اینجا این صفحه رو (http://weber.ucsd.edu/~dkjordan/resources/unicodemaker.html)Save As بکنی روی کامپیوترت هر موقع خواستی کلمت رو بنویس اون معادلش رو بهت میده .

ب- تات
جمعه 25 خرداد 1386, 08:11 صبح
ضمن تشکر مجدد:
حروف فارسی داخل دیتا بیس چی؟مثلا فیلد نام و نام خانوادگی که داخلش فارسی نوشته شده .
اونها چی . و اگر بخوام وسط برنامه مثلا یکیش رو واکشی کنم و به کاربر نشون بدم. در کل فکر میکنم این کار دست و پا گیر باشه.
ببینید من پس چرا وقتی بر نامم رو تو ویندوز 2003 دقیقا به همون شکلی که الان توی ویندوز هاستمون هست روی IIS تنظیم و راه اندازی میکنم همه چیز درسته ؟ مطمئن هستید که توی وینوز هاست نمیخواد تغییراتی داد ؟

یعنی توی دلفی 1256 نوشتی
من با دلفی 2006 نوشتمش . توی خود دلفی راهی هست که این نوشته هارو 1256 ننویسی و یونیکد بنویسی ؟

ghabil
جمعه 25 خرداد 1386, 12:48 عصر
دیتایی که از دیتابیس میگیری و توی محیط NoneUnicode دلقی نمیاد ، مشکلی براش پیش نمیاد . بخاطر اینکه ویندوز هساتت با هر تنظیماتی که هست اطلاعات رو از کاربر دریافت کرده و تعبیر کرده و ذخیره کرده و بعدا هم با همون تنظیمات بر میگردونه ، اما اونچه که تو در دلفی نوشتی با توجه به تنظیمات ویندوز تو نوشته شده ولی با توجه به تنظیمات هاستت نشون داده میشه.

در مورد تغییر در ویندوز هم معلومه که با تغییر درست میشه ، کافیه توی Regional Settings بگی برنامه های None Unicode فارسی در نظر گرفته بشند ، ولی آیا متونی این کار رو توی کامپیوتر هاستت بکنی ؟!

ب- تات
شنبه 26 خرداد 1386, 13:53 عصر
تشکر فراوان از استاد گرامی جناب ghabil همه چیز حل شد و سایت هم مثل توپ داره کار میکنه. فقط زحمت ISAPILODER رو به آدرسی که توی PM براتون فرستادم بکشید

ghabil
شنبه 26 خرداد 1386, 22:51 عصر
من فایل رو آپلود کردم ، اگر کس دیگه ای هم خواست بهم خبر بده ، آدرسش رو بفرستم.

ب- تات
جمعه 01 تیر 1386, 12:20 عصر
یه مشکل جدید :
الکی به من پیام میده
A time-out has occurred
البته من Timeout رو روی 30 دقیق تنظیم کردم اما 10 ثانیه هم مهلت نمیده. حتی روی 0 هم تنظیم کردم اما بازم این پیام رو میده !!!!!!

ghabil
جمعه 01 تیر 1386, 23:21 عصر
باید بیشتر توضیح بدی ، دیگه خودت میدونی کامپیوتر که یکدفعه نداره ، حتما یک تغییری دادی .
ضمنا لطف کن تاپیک جدید درست کن .

Peresident_y
سه شنبه 07 اسفند 1386, 22:57 عصر
اگه به سرور دسترسی دارید فقط کافی application name
بنویسید defult application

baner_cs
سه شنبه 28 آذر 1391, 13:28 عصر
با سلام
من یک فایل dll دارم که با اینترا وب نوشته شده نمی دونم ورژنش چنده دلفی 2007 حالا می خواستم با iis اجرا کنمش ولی خطا می ده . من خودم اینو ننوشتم ولی اونی که نوشته می گه درسته؟
چه تنظیماتی باید رو iis انجام بدم ؟

BORHAN TEC
سه شنبه 28 آذر 1391, 13:59 عصر
سلام
نسخه پیشفرض Intraweb معمولاً مجوز اجرای ISAPI DLL رو نداره و شما نمیتوانید این کار را انجام دهید. به احتمال زیاد موقع نمایش خطا از license شما ایراد می گیره. ولی توجه داشته باشید که در 2010 اینگونه نیست!شما می توانید برای حل این مشکل یا لایسنس اون رو خریداری کنید که خیلی گران است و یا از نسخه های بوق(!) شده این فریم ورک استفاده کنید:چشمک:
موفق باشید...