مشکل در ارسال byte[] به WCF
سلام خدمت همه دوستان
من یک عکس رو از کاربر گرفته و اون رو تبدیل به byte[] می کنم، ولی وقتی که میخوام اون رو به صورت پارامتر به WCF بفرستم با پیام خطای زیر مواجه میشم:
The remote server returned an error: NotFound
البته web.config رو هم تغییردادم ولی درست نشد و باز هم همون خطا رو میده.
لطفا اگه امکان داره یه برنامه که این کارو انجام میده رو اینجا بزارید.
با عرض معذرت خیلی عجله دارم اگه امکان داره سریع این کارو انجام بدید.:خجالت:
نقل قول: مشکل در ارسال byte[] به WCF
با سلام
اررور فوق یعنی سرویس شما یک مشکلی دارد و قبل از اینکه بخواهد اطلاعات را به کلاینت ارسال کند به خطا برخورد می کند و سرور به حالت Faulted می رود...
آیا خود سرویس را جداگانه امتحان کردید؟
پس اعمال تغییرات در سرور مرجع آن در کلاینت را Update کردید؟
نهایتا کد سرویس و contract ها و فایل پیکربندیتان(لزوما تگ system.serviceModel) را قرار دهید تا زودتر به جواب برسید.
موفق باشید
نقل قول: مشکل در ارسال byte[] به WCF
با سلام
به نظر نمیاد از سرویس باشه چون وقتی یه پارامتر از نوع String می فرستم مشکلی نداره
تو این برنامه فقط زمانی این Error رو میده که بخوام پارامتری از نوع Byte[] به وب سرویس ارسال کنم.
البته چندجا خوندم که باید تنظیمات web.config رو تغییر بدم. من هم اون مراحلی رو که لازم بود انجام دادم ولی باز هم به همین خطا برخورد می کنم.
اگر شما قبلا این کارو انجام دادید لطفا یه Source Code برام بزارید.
با تشکر
نقل قول: مشکل در ارسال byte[] به WCF
شما پارامتر String را با یک آرایه ی byte مقایسه می کنید؟! و اگر کمی حجم اطلاعات بالا رود بهتر است از روش Streaming استفاده کنید!
متاسفانه چندان وقت ندارم سمپلی بگذارم.
موفق باشید
1 ضمیمه
نقل قول: مشکل در ارسال byte[] به WCF
سلام به همه
محسن یه نمونه کد ساده واستون نوشتم و گذاشتم. همین رو اجرا کن و اگه باز هم به مشکل برخوردی، یه تصویر از خطای بذار تا ببینینم مشکل از کجاست!
1 ضمیمه
نقل قول: مشکل در ارسال byte[] به WCF
با سلام خدمت همه دوستان
از کمکتون خیلی ممنونم
ولی متاسفانه نمونه برنامه شما هم همون مشکل رو داره و Error میده.
البته من خودم تونستم این مشکل رو حل کنم. و نمونه کد رو هم گذاشتم.
با تشکر
نقل قول: مشکل در ارسال byte[] به WCF
سلام به همه
1- میشه لطف کنی اصل خطا رو هم بذارین
2- کد رو یه بار هم با عکسی با حجم پایین تر امتحان کنین و نتیجه اش رو هم بفرمایین
3- مشکلی که پیدا کردین چی بود؟ و چه جوری حلش کردین؟
4- نمونه کد رو کجا گذاشتین؟
5- با تشکرت
1 ضمیمه
نقل قول: مشکل در ارسال byte[] به WCF
سلام
آقای تقوی جو کدی که قبلا نوشته بودم و با خطا مواجه شده بود شبیه نمونه کد شما بود و با هر عکسی حتی عکس با حجم 10کیلو بایت هم Error میداد. این فایل ضمیمه هم نتیجه اجرای برنامه شما هست، که در هنگام آپلود عکس با حجم 20 کیلوبایت رخ داد.
4 ضمیمه
نقل قول: مشکل در ارسال byte[] به WCF
سلام به همه
محسن جان! قضیه پیچیده شد؟!؟!؟
مشتاق شدم که این مسئله رو حتما و دقیقا بشناسیم.
من کد خودم رو از یه کامپیوتر دیگه دانلود کردم و اونجا هم امتحان کردم.(تصاویر ضمیمه)
شما مشکل رو تو کجا پیدا کردی؟ چی بود؟ چی شد؟ چی کار کردی که رفع شد؟ یه کم توضیح بده! (اشاره به سوال سوم پست شما 7 همین تاپیک)
نقل قول: مشکل در ارسال byte[] به WCF
سلام خدمت همه دوستان
آقای تقوی جوی عزیز لینک سایتی رو که نمونه پروژه رو داره براتون گذاشتم.
http://www.silverlightchina.net/html/developer/silverlight/2010/1017/2702.html
نقل قول: مشکل در ارسال byte[] به WCF
بابا اینجا چه خبره
اونی که شما نشون میدی Exception اصلی نیست
اول IncludeFaultExpection رو برابر True قرار بدین
بعد اگه سرور رو IIS هاست شده؛ Debug رو Enable کنین
بعد اون Exception اصلی رو نشون بدین !
نقل قول: مشکل در ارسال byte[] به WCF
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
نقل قول: مشکل در ارسال byte[] به WCF
در ضمن Start Mode خود Solution رو بذارین رو Multiple ؛ و بعدش بگین اول Service رو اجرا کنه و بعد کلاینت رو
هر دو رو هم تو مد Debug
البته من خطایی نگرفتم؛ که به شما نشون بدم
نقل قول: مشکل در ارسال byte[] به WCF
ممکنه خیلی دیر شده باشه، ولی برای اونای دیگه ای که دنبال جوابشون میان اینجا میزارم.
من هم مشکل مشابه ای داشتم که بخاطر اندازه زیاد آرایه بایتی که میخواستم ارسال کنم همین پیغام رو میداد.
اینجا جوابشو پیدا کردم.
http://forums.silverlight.net/forums/t/189294.aspx
امیدوارم بدرد خورده باشه.
2 ضمیمه
نقل قول: مشکل در ارسال byte[] به WCF
سلام به همه
ممنون از اینکه حتی دیدین که یه تاپیک کهنه شده ولی باز هم تجربه تون رو انتقال میدین. با اجازه تون من یه کمی کاملتر کنم.
مطلبی که شما بهش اشاره کردین خیلی مفید بود. ممنون
میخوام تکمیل تر کنم.
شروع از اضافه کردن زمان تایم آوت ارسال، دریافت، باز کردن و بستن سرویسه. یعنی:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CustomBinding_DMSService" receiveTimeout="00:05:00" sendTimeout="00:05:00" openTimeout="00:05:00" closeTimeout="00:05:00">
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
</binding>
</customBinding>
</bindings>
این مقادیر رو تو سند تنظیمات کلاینت ارجاعی سرویس (ServiceReferences.ClientConfig) در بخش سیلورلایت پروژه پیدا کرد. (البته بعد از اینکه سرویس به رفرنسهامون اضافه شده).
نکته اول اینکه مقدار بیش از پنج دقیقه اعمال نمیشه. شما هر چه قدر هم عدد بزرگتری بدین سرویس نهایتا همون 5 دقیقه رو در نظرمیگیره. چراش رو نمیدونم (منبع: داکیومنت مایکروسافت - تجربه و آزمون خطای شخصی)
عکس شماره یک:
ضمیمه 66064
نکته دوم:
مشکل انتقال اطلاعات حجیم رو فقط با زیاد کردن مدت زمان تایم آوت نمیشه رفع کرد چون گاهی بسته ای که فرستاده میشه خودش بزرگه! مثلا شما حالتی رو در نظر بگیرین که یه کالکشن دارین که اطلاعات 5000 تا کاربر رو تو اون میخواین انتقال بدین.
اینجا موقعی که آبجکتمون (هر چند در قالب یه سند ایکس ام ال) سریالایز میشه و با سرویس فرستاده میشه به طرف کلاینت ولی اگه این آبجکت بزرگ باشه باز هم به مشکل برمیخورین.
یه نگاهی به جزئیاتی که از سند سرویس رفرنس براتون دادم بکنید. یه مقدار 2147483647 بایتی برای حجم بیشینه پیام نوشته شده تو
maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"
لازمش اینکه تو سند تنظیمات بخش وب هم یه تغییر داده بشه، یعنی تو سند Web.config تو پروژه وب سالوشن که این مقدار به عنوان حجم قراردادی شی انتقالی تعریف بشه:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
پس کافیه که یه خط به وب کانفیگ اضافه بشه :<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
به عکس زیر توجه فرمایین:
ضمیمه 66065
نکته موجود تو اون تاپیک که دوستمون اشاره کردن تو آرای ها جواب میده و برای اشیا صادق نیست که در اون صورت در کار با یه لیست ( همون یه شی از کلاس آبزروال کالکشن تو سیلورلایت) باز هم مشکل به قوت خود باقی می مونه
امیدوارم که توضیحات تکمیلی مفید بوده باشه. التماس دعا
نقل قول: مشکل در ارسال byte[] به WCF
با اینکه قدیمی بود استفاده کردم ممنون