我遇到了这个错误..任何人都指出我正确的方向 在我的WCF服务中..我有一个operationcontract,定义如下......
[OperationContract]
[FaultContract(typeof(ProductFault))]
BusinessResponse<List<Product>> GetProductList(int id);
我从控制台应用程序调用上面的方法如下..
LookUpServiceClient client = new LookUpServiceClient();
BusinessResponse<List<Product>> response = client.GetProductList(2);
但是client.GetProductList(2)
行;在VS2012中用红色加下划线。如果我将鼠标移到它上面..我的错误显示为..
答案 0 :(得分:2)
默认情况下,WCF代理生成会为所有集合类型创建数组。因此,您可以通过将变量赋值更改为此
来解决此问题BusinessResponse<Product[]> reponse = client.GetProductList(2);
您还可以通过在高级设置(数组,列表,数组列表等)中选择集合类型来更改代理生成的默认集合类型
答案 1 :(得分:1)
正如@Dylan Meaodr指出的那样,WCF代理生成为所有集合类型创建数组。
无论哪种方式都是change it to array assignment in your client project
OR
你可以告诉service to use Generic list by configuring the service.
可以找到详细信息here。引自那里 -
您可以指定要使用通用列表而不是 添加引用时单击高级按钮的数组,或者您 可以右键单击服务引用并选择configure to 改变它。
原因是WCF将通用列表序列化为要发送的数组 穿过电线。配置只是告诉svcutil创建一个 代理将它们转换回通用列表以方便您使用。
如果要在项目中添加Service reference
,请右键单击您的服务,然后单击“配置”,这将打开配置窗口,您可以在其中更改集合类型 -