我正在尝试创建一个返回IEnumarable<fVehicleTypes>
的WCF服务。
我的服务是
[ServiceKnownType(typeof(VehicleMaster))]
public IEnumerable<VehicleMaster> ListAllVehicle()
{
IEnumerable<VehicleMaster> vehicles = veadb.VehicleMasters.OrderBy(v=>v.ID).Select(v => v);
return vehicles.ToList();
}
客户我正在尝试
public ActionResult ListAllVehicles()
{
VEACRUDE.VEACRUDClient veadb = new VEACRUDE.VEACRUDClient();
var VehicleDetails =veadb.ListAllVehicle();
veadb.Close();
return View(VehicleDetails);
}
这是抛出上述错误的地方。我试过通过互联网找到的所有东西。什么都没有帮助。
此外,我尝试启用跟踪,但根本不起作用。
答案 0 :(得分:1)
WCF是一个基于消息的系统,使用XML序列化消息在客户端和服务器之间进行通信。这意味着WCF消息必须能够以 XML模式表示,从而打包成XML消息。
WCF 不远程过程调用系统,例如在运行时调用服务器的客户端之间没有“实时”连接 - 客户端只是将请求作为XML消息发送到服务器,服务器通过发回包含响应的另一条XML消息来响应。
这也意味着:您可以仅使用明确的具体类型 - 无接口。它也意味着:没有泛型。所以IEnumerable<VehicleTypes>
有两个原因并不好:泛型和接口。
您需要在服务器端创建VehicleCollection
类型,并使用该类型打包您要发回的车辆列表。将其标记为[DataContract]
并将其要序列化的所有成员标记为[DataMember]