PDA

View Full Version : Error در استفاده از Web Service در Win Application



amin_alexi
شنبه 03 مرداد 1388, 00:19 صبح
سلام
من وقتی یک Web سرویس رو در برنامه Win Application فراخونی می کنم این Error رو میده ...

There is an error in XML document (19, -110)
و ریز Error

System.Xml.XmlException: '.', hexadecimal value 0x00, is an invalid character. Line 19, position -110.
اما وقتی خود Web Service رو به تنهایی اجرا می کنم Error نمیده !
مشکل سر یک فیلده که از DataBase می خونم ...
این فیلد اطلاعات یک RitchTextBox رو ذخیره میکنه ...
فیلد از نوع string است و در زیر هم یک نمونه از اطلاعات این فیلد

{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang1065{\ fonttbl{\f0\fnil\fcharset178 Nazanin;}{\f1\fnil\fcharset0 Nazanin;}} \viewkind4\uc1\pard\rtlpar\qr\f0\rtlch\fs20\par \par \fs28 \'d4\'e3\'c7\'d1\'e5 :\f1\ltrch OutComeAndicatorNo\f0\rtlch\par \'ca\'c7\'d1\'ed\'ce :\f1\ltrch OutComeAndicatorDate\f0\rtlch\par \par \b\f1\ltrch BmgrName\f0\rtlch\par \f1\ltrch OutComeName\f0\rtlch\par \f1\ltrch OutComeSemat\f0\rtlch\par \'e3\'e6\'d6\'e6\'da :\f1\ltrch OutComeSubject\f0\rtlch\par \par \b0\par \'c7\'cd\'ca\'d1\'c7\'e3\'c7\'f1\par \par \'da\'d8\'dd \'c8\'e5 \'e4\'c7\'e3\'e5 \'d4\'e3\'c7\'d1\'e5 \f1\ltrch DocNo\lang1033\f0\rtlch \lang1065\'e3\'e6\'d1\'ce \f1\ltrch DocDate BmgzName\f0\rtlch \'ce\'e6\'c7\'e5\'d4\'e3\'e4\'cf \'c7\'d3\'ca \'e3\'de\'d1\'d1 \'dd\'d1\'e3\'c7\'c6\'ed\'cf \'e4\'d3\'c8\'ca \'c8\'e5 \'d5\'cf\'e6\'d1 \'ed\'df \'dd\'de\'d1\'e5 \'c8\'ed\'e3\'e5 \'e4\'c7\'e3\'e5 \'e3\'d3\'c4\'e1\'ed\'ca \'c8\'c7 \'d4\'d1\'c7\'ed\'d8 \'e3\'e4\'cf\'d1\'cc \'cf\'d1 \'dd\'d1\'e3 \'81\'ed\'d4\'e4\'e5\'c7\'cf \'81\'ed\'e6\'d3\'ca \'c7\'de\'cf\'c7\'e3 \'e3\'de\'ca\'d6\'ed \'c8\'e5 \'da\'e3\'e1 \'c2\'ed\'cf.\par \par \f1\ltrch BimeNameFields\lang1033\f0\rtlch\par \par \par \pard\rtlpar\qc\lang1065\b \'c8\'c7 \'ca\'d4\'98\'d1\'dc \'e1\'ed\'e1\'c7 \'d5\'e6\'d1\'ca\'ed\par \'d3\'d1\'81\'d1\'d3\'dc\'dc\'ca \'d5\'cf\'e6\'d1 \'c8\'ed\'e3\'dc\'dc\'e5\par \b0\par }
ممنون میشم اگه یک راه حلی ارایه بدین !
ممنون از توجه دوستان

zeinalkhani
یک شنبه 04 مرداد 1388, 01:56 صبح
سلام
بعید به نظر می‌رسه این خطا برای پیغام soap باشه. احتمالا خطا برای طرف سرویس است که برای client هم فرستاده شده (کد سرویس باید بررسی بشه). ولی به هرحال برای مطمئن شدن به جای فراخوانی سرویس از داخل برنامه، با ابزار WcfTestClient.exe مستقیما سرویس رو فراخوانی کنید. این ابزار با visual studio 2008 نصب میشه معمولا تو مسیر زیر میشه پیداش کرد: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE"
با این ابزار پیام هام soap که برای سرویس فرستاده می‌شود و سرویس برای Client می‌فرستد را هم می‌توانید ببینید.

من منظورتونم از "اجرای web service به تنهایی" رو نفهمیدم. اگه منظورتون همون هاست کردنش مثلا روی IIS باشه، این طبیعیه، چرا که با هاست کردن، سرویس اجرا نمی‌شه در حالی که خطایی که گفتین یه استثنا (Exception) است و مربوط به زمان اجرا میشه.

Saeed_m_Farid
یک شنبه 04 مرداد 1388, 08:48 صبح
سلام
من وقتی یک Web سرویس رو در برنامه Win Application فراخونی می کنم این Error رو میده ...
...
مشکل سر یک فیلده که از DataBase می خونم ...


همونطور که دوستمون zeinalkhani گفتن، امکان اینکه مشکل از نحوه ارتباط باشه خیلی کمه، شما احتمالاً تو استفاده از کاراکترها یا دادن پارامتر به وب متد یه مشکلی دارید، اگه محتوای RitchTextBox رو مستقیماً دارید از طریق پارامتر پاس میدین که احتمال خطا، قریب به یقین از اونجاست؛ اگه ممکنه اون وب متد و یا فایل wsdl رو بزارید، که بشه بهتر نظر داد ...


من منظورتونم از "اجرای web service به تنهایی" رو نفهمیدم. اگه منظورتون همون هاست کردنش مثلا روی IIS باشه، این طبیعیه، چرا که با هاست کردن، سرویس اجرا نمی‌شه در حالی که خطایی که گفتین یه استثنا (Exception) است و مربوط به زمان اجرا میشه.
منظور amin_alexi مثلاً مثل شکل زیر هست، یعنی مستقیماً توابع رو از Browser اجرا کنند، که اینکار هم فقط از خود وب سرور قابل انجام هست نه از وب کلاینت ها :


http://www.kodyaz.com/images/articles/WebServiceTestFromRemote/WebServiceTestByHTTPPost.JPG

zeinalkhani
یک شنبه 04 مرداد 1388, 18:15 عصر
با توجه به اینکه پارامترها قبل از درج در پیام soap، باید serialize بشن به نظر نمی‌رسه کاراکتر غیرمجازی که باعث بروز استثنا شده به خاطر مقادیر پارامترها باشه!

amin_alexi
دوشنبه 05 مرداد 1388, 01:22 صبح
این مشکل خدا رو شکر حل شد
نمی دونم چرا این جور شد ؟! هر چی هم تو سایتهای دیگه هم گشتم چیزی پیدا نکردم
راه حل :
من اطلاعات رو از سمت سرور به صورت byte[] در آوردم و در سمت Client به رشته تبدیل کردم و این مدلی error نداد !
ممنون از تو جه دوستان