1

我的一种wcf服务方法遇到了一个奇怪的问题。我有一个通用的响应模型,它适用于所有其他服务。但对于一种情况,它有问题。我的模型是这样的:

public class ResponseModel
{
  dynamic Model { get; set; }
  bool success { get; set; }
  string Message { get; set; }
}

我有一个方法叫LoadUsers. 如果找到用户,我填充一个列表,创建一个新ResponseModel对象,并将列表分配给Model属性。喜欢,

List<UserModel> usersList = GetUsersList(ids);
ResponseModel response = new ResponseModel();
response.Model = usersList;
response.success = true;
return response;

所有的逻辑都执行得很好。但我根本没有得到任何回应。我检查了,response使用断点填充到最后,但仍然没有响应。

对我来说奇怪的是, when usersListis null,这意味着isModel的属性,它工作正常。我得到回应。& 其次,它是我的通用模型,适用于所有其他方法。我想不出可能的原因。在 SO 查看了几个相关问题,但其中大多数与大小问题等有关。responsenull

服务是为 Android 设备创建的,并返回Json. 喜欢:

[OperationContract]
[WebGet(UriTemplate = "LoadUsersList?Key={Key}", ResponseFormat = WebMessageFormat.Json)]
ResponseModel LoadUsersList(string Key);

其余服务正在成功使用。请帮助/建议我找出原因。

4

1 回答 1

0

您没有得到响应但调试有效的原因是问题发生在您的服务 dll 范围之外。它适用于 null,因为序列化程序知道 null。它确实知道它是什么。动态类型在这种情况下不起作用,并且在数据合同的范围内没有意义。如果您知道模型将是一个用户列表,您应该将类​​型更改为列表。如果它可以是除 List 之外的其他类型,我建议将类型设置为接口并使用 [ServiceKnownType] 属性标记类中可能的类型。

参考

于 2015-04-15T20:36:09.543 回答