以下に示すメソッドを呼び出す場合、Request は常に null です。基本クラスとして ApiController を使用するコントローラーを持つ MVC4 アプリのコントローラーから JSON データを返す簡単なメソッドがいくつかあります。ディレクトリ関数のコードは次のとおりです。
public HttpResponseMessage GetDirectory() {
try {
var dir = r.GetDirectory();
if (dir == null) {
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
}
var response = Request.CreateResponse(HttpStatusCode.OK, dir, "application/json");
response.Headers.Location = new Uri(Request.RequestUri, "directory");
return response;
} catch (Exception ex) {
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
このメソッドが呼び出されると、「dir」が r.GetDirectory() から適切に読み込まれます。しかし、リクエストは null です。したがって、当然 Request.CreateResponse() は失敗します。Request が null になる理由、または戻り値が HttpResponseMessage のままになるように書き換える理由を探しています。
これは(私の単体テストプロジェクトで)呼び出されています:
var ctrl = new DirectoryController();
var httpDir = ctrl.GetDirectory();
ご協力いただきありがとうございます。