View Full Version : سوال: مشکل در فراخوانی متدهای موجود در web service در web form
L_eskandary
چهارشنبه 10 شهریور 1389, 10:07 صبح
سلام دوستان
مشکل من اینه که متدهایی که تو web service می نویسم نمی تونم توی web form فراخوانی کنم .البته با اجرای web service می تونم invoke بکنم . البته توی وب فرم هم تنها متد قابل فراخوانی همون متد default وب سرویس "hello world" هستش و بغیر اون رو نمی تونم ...
ممنون میشم کمکم کنین .
کدم رو هم اینجا می ذارم ، من که دلیلش رو نفهمیدم ...
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "salam";
}
[WebMethod]
public string Hello()
{
return "salam";
}
[WebMethod]
public int sum1(int a , int b)
{
int sum = 0;
sum = a + b;
return sum ;
}
}
در ضمن یه مشکل دیگه هم دارم :
اگه بخوام متدم یه dataTable خروجیش باشه تکلیفم چیه ؟ من تو vs2008 و .net 3.5 کار می کنم البته جستجو کردم و دوستان گفته بودن نباید مشکلی پیش بیاد ولی زیاد مطمئن نیستم .
با تشکر از همه دوستان.
Saeed_m_Farid
چهارشنبه 10 شهریور 1389, 15:17 عصر
مشکل من اینه که متدهایی که تو web service می نویسم نمی تونم توی web form فراخوانی کنم
همون متد default وب سرویس "hello world" هستش و بغیر اون رو نمی تونم ...
اگه بخوام متدم یه dataTable خروجیش باشه تکلیفم چیه ؟
سلام
1- کد مربوط به نحوه فراخوانی وب متد رو بذارید، کد وب سرویس چیز خاصی نداره که باعث بروز مشکل بشه.
2- متد پیش فرض نداریم، بازم به احتمال زیاد نحوه فراخوانی یا Instance شما از وب سرویس مشکل داره.
3- فرقی نمی کنه، اگه دو طرف هم دات نت باشه (سرویس دهنده و WebForm شما) اکثر انواع داده ها با توجه به یکسان بودن پلت فرم ها، قابل استفاده هستند، فقط کافیه خروجی وب متد رو به یک شی از نوع dataTable انتساب بدین.
L_eskandary
چهارشنبه 10 شهریور 1389, 15:52 عصر
1- کد مربوط به نحوه فراخوانی وب متد رو بذارید، کد وب سرویس چیز خاصی نداره که باعث بروز مشکل بشه.
دوست عزیز اینم کد مربوط به فراخوانی وب متد :
protected void Button1_Click(object sender, EventArgs e)
{
localhost.WebService1 x = new web_service.localhost.WebService1();
Label1.Text = x.HelloWorld();
}
منظورم از متد پیش فرض همون متد HelloWorld بود که موقع ایجاد وب سرویس متدش رو می بینیم .
مشکل من اینه که فقط همون متد HelloWorld رو می تونم فراخوانی بکنم البته به روش فوق ، و مثلا عنوان متد sum1 ، تو لیست متدهای web service , البته تو وب فرم نمایش داده نمیشه و منم طبیعتا نمی تونم انتخابشون کنم .
با تشکر از توجه تون ...
Saeed_m_Farid
چهارشنبه 10 شهریور 1389, 18:31 عصر
اگه لیست متدها میاد و Invoke هم میشن احتمالاً Web Reference درست تو کلاینت اضافه نشده، یعنی نسخه درستی نیست: مثلاً شما یه زمان WSDL مربوط به وب سرویسی که فقط همون HelloWorld رو داشته به پروژه تون اضافه کردین و بعد از افزودن متدهای جدید Web Reference رو Update نکردید.
از Web References (تو Solution Explorer) وب سرویس خودتون رو حذف کنید و بعد با یه اسم درست (نه localhost) دوباره WSDL رو به پروژه اضافه کنید، اگه برای تمرین هست که هیچ ولی تو یک پروژه واقعی، اولاً URL وب سرویس رو باید مشخص کنید (چون معنی نداره که هم سرور و هم کلاینت تو سیستم لوکال باشند!)، بعد هم یکبار یک شیء از نوع وب سرویس شما ایجاد میشه و هرجا که لازم بود از متدهای اون استفاده میکنن، نه اینکه هردفعه یک شی از اون درست کنید، اگه به پوشه Web References کنار پروژتون یک نگاهی بندازید میبینید که بازاء هر Instance چقدر EventHandler، object و CodeAttribute و ... ایجاد میشه (تو فایل Reference.cs)؛ درسته C# همه کار رو خودش میکنه ولی اصلاً منطقی نیست که بازاء هرفراخوانی یه تابع از وب سرویس، هربار شیء وب سرویس ایجاد بشه و حذف.
اینجا رو هم ببینید بد نیست : Web Services in C-Sharp (http://www.c-sharpcorner.com/Articles/ArticleListing.aspx?SectionID=1&SubSectionID=133)
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.