如何将数组值传递给 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;
}
在我的客户端项目中(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;
}