Web Services 如何将对象传递到Web服务中并使用该Web服务

eiee3dmh  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(172)

请考虑以下代码..

[Serializable]
public class Student
{
    private string studentName;
    private double gpa;

    public Student() 
    {

    }

    public string StudentName
    {
        get{return this.studentName;}
        set { this.studentName = value; }
    }

    public double GPA 
    {
        get { return this.gpa; }
        set { this.gpa = value; }
    }

}

创建数组列表的方法

[WebMethod]
    public void AddStudent(Student student) 
    {
        studentList.Add(student);
    }

    [WebMethod]
    public ArrayList GetStudent() 
    {
        return studentList;
    }

我想使用简单C#客户端表单应用程序来使用Web服务。
我的服务参考.学生=新建Consuming_WS.我的服务参考.学生();

MyServiceRef.Service1SoapClient client = new Consuming_WS.MyServiceRef.Service1SoapClient();

你知道吗?
提前感谢!

gcuhipw9

gcuhipw91#

问题是您的Web服务不是无状态的。每次调用Web服务时,都会示例化Web服务类的一个新示例,并在此示例上调用方法。调用示例时,会为studentList分配一个新的空列表。
你需要改变你的状态管理。

private static ArrayList studentList = new ArrayList();

可能会工作得更好,但它仍然不可靠。请查看http://www.beansoftware.com/asp.net-tutorials/managing-state-web-service.aspx处的文章,以获取在Session(或Application)中存储状态的示例。
编辑:添加了示例代码以避免使用ArrayList。
若要避免ArrayList和ArrayOfAnyType出现问题:

private List<Student> studentList = new List<Student>();

[WebMethod]
public void AddStudent(Student student) 
{
    studentList.Add(student);
}

[WebMethod]
public Student[] GetStudent() 
{
    return studentList.ToArray();
}

相关问题