PDA

View Full Version : مشکل در استفاده از وب سرویس



M * M * A
شنبه 02 آبان 1388, 11:31 صبح
با سلام
من یک وب سرویس درست کردم که یک تابع داره که خروجی این از نوع datatable هست.
حالا من وقتی که از ویندوز فرم این تابع رو فراخوانی می کنم خطا میدهد.
اگه روشی چیزی به نظرتون میرسه راهنمایی کنید
با تشکر
من توی این زمینه تازه کارم.

saied_genius
شنبه 02 آبان 1388, 19:21 عصر
سلام

اگر مطمئن هستيد که web service مشکل نداره ، يعني منظورم اينه که مطمئني که web method که نوشتي مشکل نداره ، مشکل توي تنظيمات سرور است.

چطوري داريد با وب سرويس کار مي کنيد.
از توي پروژه، سرور local يا سرور اينترنت ؟

بيشتر توضيح دهيد تا زودتر مشکلتان حل شود.

مشکلات معمول:
فولدري که وب سرويس درون آن قرار مي گيرد و قرار است از آنجا فراخواني شود "حتماً" بايد virtual directory باشد.

احتمالاً مشکل شما همين باشد.

پيغام error را بنويسيد تا بشود بيشتر راهنمايي کرد.

موفق باشيد.

M * M * A
شنبه 02 آبان 1388, 20:16 عصر
salam
web servisam ejra mishe
tabamam kar mikone
fagat vagti be dastore return mirese ekhtar mide
az DataTable khata migire
yek chizi mige dar bare XML

saied_genius
شنبه 02 آبان 1388, 21:29 عصر
لطف کنيد پيغام خطا را کامل بفرستيد.

نمونه کد را هم اگر ممکنه بفرستيد.

M * M * A
یک شنبه 03 آبان 1388, 09:32 صبح
salam
این برنامه هاست.
وب سرویس و ویندوز اپلیکیشن.
لطفا راهنمایی کنید

saied_genius
یک شنبه 03 آبان 1388, 13:51 عصر
سلام

ويندوز اپليکيشنتان را به شکل زير تغيير دهيد.


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
localhost.Service service = new Web_servis.localhost.Service();

private void Form1_Load(object sender, EventArgs e)
{

DataTable dt = new DataTable();

dt = service.RetData();

}
}

موفق باشيد.

M * M * A
یک شنبه 03 آبان 1388, 23:14 عصر
این خطارو میده باز

ystem.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Cannot serialize the DataTable. DataTable name is not set.
at System.Data.DataTable.WriteXmlSchema(XmlWriter writer, Boolean writeHierarchy)
at System.Data.DataTable.System.Xml.Serialization.IXm lSerializable.WriteXml(XmlWriter writer)
at System.Xml.Serialization.XmlSerializationWriter.Wr iteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlS erializationWriter1.Write3_RetDAtaResponse(Object[] p)
at Microsoft.Xml.Serialization.GeneratedAssembly.Arra yOfObjectSerializer5.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
at System.Xml.Serialization.XmlSerializer.Serialize(X mlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Serialize(X mlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Xml.Serialization.XmlSerializer.Serialize(X mlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
at System.Web.Services.Protocols.SoapServerProtocol.W riteReturns(Object[] returnValues, Stream outputStream)
at System.Web.Services.Protocols.WebServiceHandler.Wr iteReturns(Object[] returnValues)
at System.Web.Services.Protocols.WebServiceHandler.In voke()
--- End of inner exception stack trace ---

مهدی کرامتی
یک شنبه 03 آبان 1388, 23:31 عصر
خودش داره دلیل خطا رو میگه: Cannot serialize the DataTable. DataTable name is not set
در وب سرویس یک نام به DataTable تون بدید، یعنی خط:

dtAdapter.Fill(dt);
را اینگونه تغییر دهید:

dtAdapter.Fill(dt,"YourTableName");

همچنین برای نمایش کد از تگ Code استفاده کنید.

M * M * A
دوشنبه 04 آبان 1388, 07:42 صبح
ازتون تشکر میکنم.
یک خواهش ، میشه برنامه را نگاه کنین.
من هر کاری کردم نتونستم اطلاعاتی که از web service میادو تو datagirdview بریزم.

razzaghi.b
یک شنبه 24 آبان 1388, 15:32 عصر
سلام خسته نباشید
چطوری میتونم از وب سروی این سایت استفاده کنم
http://lme.com
مرسی از دوستان

aminva2006
شنبه 28 آبان 1390, 19:28 عصر
سلام
دوست عزيز اگه به خطايي كه برنامه بهت ميده دقت كني متوجه ميشي كه نبايد از Data Tabel براي فرستادن اطلاعات استفاده كني
چند راه به ذهنم ميرسه :
1 - از Data set استفاده كن براي انتقال
2- اطلاعات رو به صورت يك ارايه دو بعدي بفرست
3 - به صورت Xml انتقال بده اطلاعات را
البته استفاده از Data set بهترين را هست - من خودم از اين روش استفاده ميكنم
و علت خطاي برنامه اين هست كه وب سرويس نميتونه شي Data Tabel را يه صورت سرياليزه در بياره و انتقال بده

atashsavar
یک شنبه 29 آبان 1390, 12:37 عصر
سلام دوست عزیز
شما به جای این کار می تونید یک کلاس داخل وب سرورتون تعریف کنید و در تابع آرایه ای از اون کلاس را بر گردانید به همین سادگی