1

サービスのメソッドの 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ブレークポイントを使用して最後まで問題なく入力されましたが、まだ応答がありません。

私にとって奇妙なことは、 is のプロパティを意味する is の場合usersList、正常nullに動作することです。私は応答を取得します。&第二に、それは私の一般的なモデルであり、他のすべての方法でうまく機能します。考えられる理由がわかりません。SOでいくつかの関連する質問をチェックしましたが、それらのほとんどはサイズの問題などに関連していました.Modelresponsenull

サービスは Android デバイス用に作成され、 を返しJsonます。お気に入り:

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

残りのサービスは正常に消費されています。理由を理解するために親切に助けてください/提案してください。

4

1 に答える 1

0

応答が得られないのにデバッグが機能する理由は、サービス dll の範囲外で問題が発生しているためです。シリアライザーは null を認識しているため、null に対して機能します。それ以外の場合は、それが何であるかを知っています。この場合、動的型は機能せず、データ コントラクトのスコープでは意味がありません。モデルがユーザー リストになることがわかっている場合は、タイプをリストに変更する必要があります。リストに加えて他のタイプにすることができる場合は、タイプをインターフェイスとして設定し、クラスで可能なタイプを [ServiceKnownType] 属性でマークすることをお勧めします。

参照

于 2015-04-15T20:36:09.543 に答える