WCF客户端中的基础连接已关闭错误

时间:2013-07-23 04:55:40

标签: asp.net-mvc wcf connection

我正在尝试创建一个返回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);
}

这是抛出上述错误的地方。我试过通过互联网找到的所有东西。什么都没有帮助。

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

1 个答案:

答案 0 :(得分:1)

WCF是一个基于消息的系统,使用XML序列化消息在客户端和服务器之间进行通信。这意味着WCF消息必须能够以 XML模式表示,从而打包成XML消息。

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

这也意味着:您可以使用明确的具体类型 - 无接口。它也意味着:没有泛型。所以IEnumerable<VehicleTypes>有两个原因并不好:泛型和接口。

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