如何将数组值传递给 asp.net c# Web 服务

本文关键字:net asp Web 服务 数组 值传 | 更新日期: 2023-09-27 18:36:58

在我的客户端项目(asp.net MVC4)中,我有一个类文件

public class Person
{
    public string Name { get; set; }
    public int Phone { get; set; }
}

从控制器中,我尝试调用我的 Web 服务方法。Web 服务部分是不同的项目。

Person per = new Person();
per.Name = "Vibin";
per.Phone = 123456789;
FirstService.WebService service = new FirstService.WebService();
service.TakeList(per);

我的网络服务方法是

[WebMethod]
public void TakeList(Person theList)
{
    // stuff
}

问题是我无法将值传递给 web 方法。我搜索了很多寻找解决方案,但失败了。请帮我解决这个问题。另外,请提供一个示例,用于在 asp.net c# 中将数组值发送到 Web 服务。提前谢谢。

如何将数组值传递给 asp.net c# Web 服务

我不知道

,但这是类型歧义的问题。

您使用的 person 类与定义的 Web 服务不同,即使两者具有相同的属性也是如此。

当您添加 Web 引用时,它将创建自己的实体,您必须将 MVC 模型映射到 Web 服务模型。

Person per = new Person(); // your MVC4 App local model.
per.Name = "Vibin";
per.Phone = 123456789;
FirstService.WebService service = new FirstService.WebService();
mvcEmpty.FirstService.Person p = new mvcEmpty.FirstService.Person(); // Web service person generated during proxy generation when you add web reference.
p.Name = per.Name;
p.phone = per.Phone;
service.TakeList(p);

通过使用(序列化和反序列化)可以做到这一点。

在客户端序列化对象(它将作为数组的字节发送)。

将收到的数组字节反序列化为 Web 服务端的对象。

使用以下代码:

    // Convert an object to a byte array
    private byte[] ObjectToByteArray(Object obj)
    {
       if(obj == null)
       return null;
       BinaryFormatter bf = new BinaryFormatter();
       MemoryStream ms = new MemoryStream();
       bf.Serialize(ms, obj);
       return ms.ToArray();
    }
    // Convert a byte array to an Object
    private Object ByteArrayToObject(byte[] arrBytes)
    {
      MemoryStream memStream = new MemoryStream();
      BinaryFormatter binForm = new BinaryFormatter();
      memStream.Write(arrBytes, 0, arrBytes.Length);
      memStream.Seek(0, SeekOrigin.Begin);
      Object obj = (Object) binForm.Deserialize(memStream);
      return obj;
    }