0

我试图创建一个返回的 WCF 服务IEnumarable<fVehicleTypes>

我的服务是

[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);
}

这是引发上述错误的地方。我尝试了所有我能在互联网上找到的东西。没有任何帮助。

我还尝试启用跟踪,但根本不起作用。

4

1 回答 1

1

WCF 是一个基于消息的系统,它使用 XML 序列化消息在客户端和服务器之间进行通信。这意味着 WCF 消息必须采用这样一种方式,即它们可以在XML 模式中表达,从而打包成 XML 消息。

WCF不是远程过程调用系统,例如在运行时客户端调用服务器之间没有“实时”连接——客户端只是将请求作为 XML 消息发送到服务器,服务器通过发送回另一个 XML 消息来响应包含响应。

这也意味着:您只能使用显式的具体类型- 不能使用接口。这也意味着:没有泛型。所以IEnumerable<VehicleTypes>不好有两个原因:泛型和接口。

您需要VehicleCollection在服务器端创建一个类型,并使用它来打包您要发回的车辆列表。将其标记为 a[DataContract]并将其所有要序列化的成员标记为[DataMember]

于 2013-07-23T05:00:19.517 回答