2016-11-08 17 views
0

私はJSONをとり、StringContentに入れてAPIに渡したいと思っています。そこから、JSONを非直列化してクラスに戻して、そこから使いたいと思っています。現時点では、私は何を伝えることができますdeserializeしようとしているエラーを取得している、logInfoは、APIに到達すると空です。パラメータを書き出しようとすると、イベントログで空になります。下記の消費者およびAPIコードを参照してください。HttpContentでJsonをPOSTしAPIコントローラで解析する方法

 public void Log(LogInfo logInfo) 
     { 
     using (var client = CreateHttpClient()) 
     { 
      var jsonData = JsonConvert.SerializeObject(logInfo); 
      HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json"); 
      HttpResponseMessage response = client.PostAsync("Logger/Log", content).Result; 

      if (!response.IsSuccessStatusCode) 
      { 
       throw new InvalidOperationException($"{response} was not successful."); 
      } 
     } 
    } 


     [HttpPost] 
    public HttpResponseMessage Log([FromBody] string logInfo) 
    { 
     //var logData = JsonConvert.DeserializeObject<LogInfo>(logInfo); 
     EventLog.WriteEntry("TestApp", logInfo); 
     EventLog.WriteEntry("TestApp", Request.Content.ReadAsStringAsync().Result); 
     //Log(logData); 

     return Request.CreateResponse(HttpStatusCode.OK); 
    } 
+1

なぜ答えになっていないときに-1になったのか分かりませんか?笑あなたが質問を理解していない場合は...おめでとう – user1732364

答えて

1

コントローラメソッドのログには、LogInfoパラメータを使用する必要があります。このLogInfoモデルは、DTO/POCOとして動作するクラスです。したがって、収集するプロパティ(getterおよびsetters)のみが含まれている必要があります。このDTO/POCOをビジネスドメインモデルにマップすることができます。

[HttpPost] 
public HttpResponseMessage Log(LogInfo logInfo) 
{ 
    ... 
} 
+0

私はJSONの変換が必要ないでしょうか? – user1732364

+0

サーバー側で変換を行うべきではありません。 .NET Web APIフレームワークはそれを行う必要があります。 – alltej

+0

これは問題を解決しました!ありがとう – user1732364

関連する問題