PDA

View Full Version : سوال: محدودیت طول رشته ورودی در HttpWebRequest



moeinih
سه شنبه 21 خرداد 1392, 10:53 صبح
با سلام
من میخوام با استفاده از HttpWebRequest یک کوئری رو اجرا کنم بعضی اوقات که مثلا کوئری insert میخوام بنویسم ممکنه طول رشته بلند باشه و بخاطر محدودیتی که طول رشته ورودی HttpWebRequest داره خطا میده و کوئری رو اجرا نمیکنه
لطفا بگید راهی داره که بتونم این محدودیت رو بردارم یا کاهشش بدم؟؟؟؟؟؟؟؟؟؟؟؟؟

xvahid
سه شنبه 21 خرداد 1392, 11:14 صبح
سوالتون زیاد واضح نیست؟ شما میخواید متن Query خودتون رو از طریق HttpWebRequest ارسال کنین؟ اینکار هرگز توصیه نمیشه ولی در هر صورت شما میتونین HttpWebRequest.ContentLength رو هر مقداری که میخواید Set کنین. که تا حداکثر Int64 جا داره.

moeinih
سه شنبه 21 خرداد 1392, 18:05 عصر
بله من ميخوام همين كارو بكنم ميشه بگيد چه مشكلاتي داره ؟؟؟؟ البته ميدونم اگه منظورتون مشكل امنيتي هست از الگوريتمهاي هشينگ براي كد كردن رشته ارسالي استفاده مي كنم
فقط ميشه لطفا بگيد از HttpWebRequest.ContentLength چجوري بايد استفاده كنم ؟؟ يعني يك مثال بديد چون من تو كوئري ارساليم يك فيلد دارم كه مقدارش از htmleditor خونده ميشه و اون وقتي به كد html تبديل ميشه طول رشته زياد ميشه و نميتونه كوئري رو اجرا كنه يعني فقط مشكلم تو همين فيلده كه مقدارش طولاني ميشه

tooraj_azizi_1035
سه شنبه 21 خرداد 1392, 18:10 عصر
براتون مقدور هست که کوئری تون رو در یک SP در دیتابیس بگذارید و اون رو با نام مورد ارجاع قرار بدید؟

moeinih
چهارشنبه 22 خرداد 1392, 07:30 صبح
منظورتون رو خوب متوجه نشدم sp چیه؟

xvahid
چهارشنبه 22 خرداد 1392, 10:25 صبح
SP مخفف Stored Procedure ه.

معماری پروژه شما چیه؟ چه نیازی دارید که از HttpWebRequest استفاده کنین؟ چرا Query رو باید به سرور بفرستین؟

برای Set کردن مقدار ContentLength خیلی راحت اون رو به یک عدد دلخواه تنظیم کنید.


var request = (HttpWebRequest) WebRequest.Create(new Uri("Your URL"));
request.ContentLength = Int64.MaxValue;

moeinih
پنج شنبه 23 خرداد 1392, 07:45 صبح
ممنونم ولی این دستوری که شما دادید نوشتم موقع اجرا به همون خط contentlenght گیر میده اگه بخوام از sp استفاده کنم باید چکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

xvahid
پنج شنبه 23 خرداد 1392, 08:24 صبح
دوست عزیز اگر میخواید نتیجه بگیرید باید توضیحات بیشتری بدید. شما سوالهای پاسخ قبلی من رو بدون جواب گذاشتین. اینجا باز میگید موقع اجرا گیر میده ولی نمیگید چه پیغام خطایی میگیرید. چطور توقع دارید دیگران بتونن به شما کمک کنند در حالیکه خودتون سوالتون رو کامل مطرح نمیکنین؟

moeinih
پنج شنبه 23 خرداد 1392, 08:55 صبح
پروژه من یک پروژه دانشجوییه که استاد ازم خواسته که بتونم در یک دیتابیس رو ی یک هاست اطلاعات ثبت کنم برای اینکار احتیاج به این دارم که از سی شارپ با httpwebrequest کوئریم رو روی دیتابیس هاست اجرا کنم و در زمان اجرای این کوئری وقتی برخی فیلدهای توضیحاتم مقدارش طولانی میشه کوئریم اجرا نمیشه همین!!!!!!!!!
حالا میشه راهنمایی کنید؟
این عکس پیام خطایی که میده:

xvahid
پنج شنبه 23 خرداد 1392, 09:21 صبح
پروژه من یک پروژه دانشجوییه که استاد ازم خواسته که بتونم در یک دیتابیس رو ی یک هاست اطلاعات ثبت کنم برای اینکار احتیاج به این دارم که از سی شارپ با httpwebrequest کوئریم رو روی دیتابیس هاست اجرا کنم و در زمان اجرای این کوئری وقتی برخی فیلدهای توضیحاتم مقدارش طولانی میشه کوئریم اجرا نمیشه همین!!!!!!!!!
حالا میشه راهنمایی کنید؟
این عکس پیام خطایی که میده:

اون قسمتی که قرمز کردم رو چطوری بهش رسیده اید؟

xvahid
پنج شنبه 23 خرداد 1392, 09:25 صبح
اینم ببین: http://support.microsoft.com/kb/908573

هر چند هنوز متقاعد نشده ام که باید از httpwebrequest استفاده کنی.

moeinih
پنج شنبه 23 خرداد 1392, 09:40 صبح
شما راه بهتری از httpwebrequest سراغ دارید؟

xvahid
جمعه 24 خرداد 1392, 09:42 صبح
اوکی، بگذار یک مقدار مقدمه بگم.

کلاس HttpWebRequest در namespace ی قرار داره بنام System.Net همه کلاسهای این namespace برای برقراری ارتباط بین Client و Server هستند. کلاس HttpWebRequest در واقع همون کلاس WebRequest ه که از پروتکل Http برای ارسال و دریافت اطلاعات استفاده میکنه.

اما،

کلاسهایی که جهت برقراری ارتباط با دیتابیس کاربرد دارن در namespace ی بنام System.Data و بطور خاص برای برقراری ارتباط با SQL Server در System.Data.SqlClient قرار دارند. من پیشنهاد میکنم مقداری Document های مربوط به این دو Namespace رو مطالعه کنین و ببینین آیا دارید از کلاس درستی استفاده میکنین یا خیر.

اما برگردیم به مشکل شما:

از عکسی که فرستادی به نظر میرسه Client سیستم شما یک Windows Application شایدم یک WPF Application باشه. خوب سرور این Client کجاست؟ روی همون کامپیوتره؟ یا روی یک کامپیوتر دیگه؟ اگه روی همون کامپیوتره آیا توی یک Process ه با این Client یا یک پروسس دیگه؟ اگر روی یک کامپیوتر دیگست آیا ارتباط با Client از طریق وب ه یا از طریق Lan ؟ و اینکه Data Provider درست کردی در سمت سرور؟ یعنی یک سری سرویس داری که Call شون میکنی برای کار با Database ت؟ اگه جواب مثبته از چه تکنولوژی استفاده کردی واسه پیاده کردن اون سرویس ها؟ WCF هستند؟ SOAP ه؟ REST ه؟ پارامترهای این سرویس ها رو از چه طریقی ارسال میکنی؟

شاید که فکر کنی خیلی پیجیده شد قضیه ولی باور کن تا جواب این سوالات رو ندی کسی نمیتونه جواب درست بهت بده

moeinih
شنبه 25 خرداد 1392, 09:32 صبح
بله سیستم من یک windows application هست و سرورش هم روی وبه
از اینای دیگه که گفتی سر در نمیارم
مشکل من چجوری حل میشه استفاده از همون content lenghtرو برام باز کن ببینم میتونم با استفاده از اون کوئری طولانی بفرستم یا برم سراغ راه دیگه ای؟؟؟؟؟؟؟؟/

moeinih
یک شنبه 26 خرداد 1392, 10:19 صبح
یکی به داد من برسه

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