WebService新手求教,急!!在线等
/// <summary>
/// 采购单主单
/// </summary>
public class OT_TK_CGD
{
public string 字段1 = "!#%&";
。。。。。。。。。。。。。。。。。。。
}
/// <summary>
/// 采购单从单
/// </summary>
public class OT_TK_CGD_D
{
public string 字段1 = "!#%&";
。。。。。。。。。。。。。。。。。。。
}
我需要写一个WebService功能如下:
提供给客户一个方法。两个参数,一个是主表的实体类,一个是从表的实体类集合,别人调用此WebService
可以看到我的接口里的实体类,然后赋值为OBJ类型的值,
[WebMethod]
public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
{
}
因为实体类中数据类型问题。要求参数得是OBJECT类型的,小弟初步了解WebService,望大神们把帮助下!不胜感激! webservice object
[解决办法]
[Serializable()]
public class OT_TK_CGD
{
public string 字段1 = "!#%&";
。。。。。。。。。。。。。。。。。。。
}
[Serializable()]
public class OT_TK_CGD_D
{
public string 字段1 = "!#%&";
。。。。。。。。。。。。。。。。。。。
}
[WebMethod]
public string updaCGD(OT_TK_CGD cgd, List<OT_TK_CGD_D> cgds)
{
}
调用者那边也需要定义这两个实体类,并且类上都需要标记可序列化即 [Serializable()]
[解决办法]
引用类型需要标记可序列化即[Serializable()]
值类型或基元类型可以直接传输,不用序列化。
[解决办法]
[Serializable]
public class OT_TK_CGD
{
...
}
[Serializable]
public class OT_TK_CGD_D
{
...
}
不过这样不科学,不建议
[解决办法]
webservice 方法的参数类型最好设置为基础数据类型. 如果你硬是要传递引用类型,
webservice端的引用参数类型,客户端也得有 . 就是引用同一实体层.
我没有这样做过,理论上是这样的.我一般都是使用基础类型
[解决办法]
web service在调用方要知道你的实体类,如果你不在你的wsdl当中描述这个对象的话,调用方是不能转换成你想要的object对象的。
你也不应该这样转换,最好按照1楼的说法去做。
[解决办法]
using System.Runtime.Serialization;
using System.ServiceModel;
我一般先会写一个接口
[ServiceContract]
public interface IXXX//命名自己处理
{
[OperationContract]
public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
{
}
}
再实现这个接口
public class XXX: IXXX
{
public string updaCGD(主表实体类OBJ,从表实体类集合OBJ)
{
//实现这个方法
}
}
至于用到的实体,每个字段加上[DataMember]属性
/// <summary>
/// 采购单主单
/// </summary>
public class OT_TK_CGD
{
[DataMember]
public string 字段1 = "!#%&";
。。。。。。。。。。。。。。。。。。。
}