关于webservice的参数和返回值有关问题!
关于webservice的参数和返回值问题!~
=====服务端=====
namespace WebTest
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Person
{
public string name;
public int age;
public string address;
}
public class Service1 : System.Web.Services.WebService
{
public Person PP;
int iii;
public Service1()
{
PP = new Person();
iii = -1;
}
[WebMethod]
public Person Change(Person tmpperson)
{
tmpperson.name = tmpperson.name + "将被改变";
tmpperson.age = 99;
tmpperson.address = tmpperson.address"将被改变";
PP.name = tmpperson.name;
PP.age = 88;
PP.address = "333333";
iii = 1;
return tmpperson;
}
[WebMethod]
public int Back()
{
return iii;
}
}
}
=====客户端=====
Person clientperson = new Person();
clientperson.name = "某人名";
clientperson.age = 28;
clientperson.address = "某大学";
localhost.Service1SoapClient WS = new localhost.Service1SoapClient();
localhost.Person person1 = new localhost.Person();
localhost.Person person2 = new localhost.Person();
person1.name = "某人";
person1.age = 28;
person1.address = "某大学";
person2=WS.Change(person1);
int j = -1;
localhost.Person B = new localhost.Person();
j = WS.Back();
=======问题=======
1.执行后发现person2确实返回了改变的值,为什么person1没有变?它不是引用类型么?难道只有返回值才经过XML传输?参数是不经过XML返回的?
2.在webservice应用程序中初始化的iii在经过Change函数时确实从-1变成了1,但是为什么经过 WS.Back()传输回数值时发现iii又变回了-1?
------解决方案--------------------
1:person1已经改变,但是你没返回。
2:int值类型,你调用第二次的时候又走了一边构造
------解决方案--------------------
你把他当成是一个页面就比较好理解了。
请求是一次性的
=====服务端=====
namespace WebTest
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Person
{
public string name;
public int age;
public string address;
}
public class Service1 : System.Web.Services.WebService
{
public Person PP;
int iii;
public Service1()
{
PP = new Person();
iii = -1;
}
[WebMethod]
public Person Change(Person tmpperson)
{
tmpperson.name = tmpperson.name + "将被改变";
tmpperson.age = 99;
tmpperson.address = tmpperson.address"将被改变";
PP.name = tmpperson.name;
PP.age = 88;
PP.address = "333333";
iii = 1;
return tmpperson;
}
[WebMethod]
public int Back()
{
return iii;
}
}
}
=====客户端=====
Person clientperson = new Person();
clientperson.name = "某人名";
clientperson.age = 28;
clientperson.address = "某大学";
localhost.Service1SoapClient WS = new localhost.Service1SoapClient();
localhost.Person person1 = new localhost.Person();
localhost.Person person2 = new localhost.Person();
person1.name = "某人";
person1.age = 28;
person1.address = "某大学";
person2=WS.Change(person1);
int j = -1;
localhost.Person B = new localhost.Person();
j = WS.Back();
=======问题=======
1.执行后发现person2确实返回了改变的值,为什么person1没有变?它不是引用类型么?难道只有返回值才经过XML传输?参数是不经过XML返回的?
2.在webservice应用程序中初始化的iii在经过Change函数时确实从-1变成了1,但是为什么经过 WS.Back()传输回数值时发现iii又变回了-1?
------解决方案--------------------
1:person1已经改变,但是你没返回。
2:int值类型,你调用第二次的时候又走了一边构造
------解决方案--------------------
你把他当成是一个页面就比较好理解了。
请求是一次性的