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

How to pass Array values to asp.net c# web services

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

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
}

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

我不知道,但这是类型歧义的问题。

您使用的 class 与定义的 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;
    }