そこで、応答を返す todo サービスを修正しました。
以下のServiceExceptionHandler コードをテストするために意図的に未処理のエラーをスローする場合、デフォルトを使用すれば問題ありません/Backbone.Todos/todo/1?format=json
。
しかし、私が使用する/Backbone.Todos/todo/1?format=xml
と、次のように表示されます。
XML 解析エラー: 整形式ではありません場所: /Backbone.Todos/todo/1 行番号 1、列 2:
これが私のコードです:
public class AppHost : AppHostBase {
public override void Configure(Funq.Container container) {
//Unhandled errors
this.ServiceExceptionHandler = (req, ex) => {
var res = new { //i return a dynamic object here ... and it doesn't work
Result = null as object,
ResponseStatus = new ResponseStatus() {
ErrorCode = "Error",
Message = "Not available",
StackTrace = "Not available"
}
};
return res;
};
//...
}
//....
}
//My normal request/response dtos look like this:
//-----------------------------------------
[Route("/todo/{id}", "GET")] //display req
public class GetTodo : IReturn<TodoResponse> {
public long Id { get; set; }
}
public class TodoResponse : IHasResponseStatus {
public IList<Todo> Result { get; set; }
public ResponseStatus ResponseStatus { get; set; }
}
問題は、エラーが発生したときに、それがどのタイプであるかを知らずに正しいタイプの応答を作成できないことです。着信要求と例外のみをパラメーターとして取得しますが、応答タイプは取得しません。