如何将数组值传递给 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 服务。提前谢谢。
我不知道
,但这是类型歧义的问题。
您使用的 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;
}